我有以下名为data
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 :(得分: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)
答案 1 :(得分:1)
你正在迭代元组,但问题在于list(i)
本身试图遍历元素i
,将元素转换为列表。你想要的是:
ls = []
for i in data:
ls.append(i)
或者,如果由于某种原因,您希望每个元素都在自己的列表中:
ls = []
for i in data:
ls.append([i])