获得“类型错误:‘datetime.date’对象不是可迭代”,而迭代元组(元组到列表的转换)
问题描述:
我有以下的元组称为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
。
为什么?
答
你通过元组精细迭代,但问题是list(i)
这本身试图通过元素i
迭代,转换元素的列表。你想要的是:
ls = []
for i in data:
ls.append(i)
或者,如果由于某种原因,你想在自己的列表中的每个元素:
ls = []
for i in data:
ls.append([i])
答
当使用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)
为什么'名单(我)'...你想列表或什么的名单? –
你没有在datetime.date中调用的元组列表,你确定不需要'ls = list(data)'或'ls.append([i])'? –
'ls = list(data)' –