2016-01-06 70 views
0

我有以下的元组称为data获得“类型错误:‘datetime.date’对象不是可迭代”,而迭代元组(元组到列表的转换)

data = (
    datetime.date(2015, 9, 11), 
    datetime.datetime(2015, 9, 11, 12, 55, 24), 
    'BB', 
    'ABC', 
    ) 

它由date的,一个datetime ,和两个str元素。

虽然这转换成tuple一个list,我想如下遍历它:

ls = [] 
for i in data: 
    ls.append(list(i)) 

我有以下错误TypeError: 'datetime.date' object is not iterable

为什么?

+0

为什么'名单(我)'...你想列表或什么的名单? –

+1

你没有在datetime.date中调用的元组列表,你确定不需要'ls = list(data)'或'ls.append([i])'? –

+0

'ls = list(data)' –

回答

1

你通过元组精细迭代,但问题是list(i)本身试图通过元素i迭代,转换元素的列表。你想要的是:

ls = [] 
for i in data: 
    ls.append(i) 

或者,如果由于某种原因,你想在自己的列表中的每个元素:

ls = [] 
for i in data: 
    ls.append([i]) 
2

当使用Python中的for循环,你正在遍历的事情每个元素绑定到您在for声明中使用的名称。所以你的情况:

for i in data: 
  • i第一次绑定到datetime.date(2015, 9, 11)
  • i然后被绑定到第二个元素则datetime.datetime(2015, 9, 11, 55, 24)
  • i被绑定到第三个元素'BB'
  • i然后绑定到第四个元素'ABC'

所以你for循环内时,你说:

ls.append(list(i)) 

你正试图从每一个元素创建一个列表 - 你不能从date也不datetime做一个清单。

tuple您的序列类型转换为list最简单的方法是:

data = list(data) 
相关问题