获取" TypeError:' datetime.date'对象不可迭代"迭代元组(将元组转换为列表)

时间:2016-01-06 18:49:06

标签: python list

我有以下名为data

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

它由datedatetime和两个str元素组成。

将此tuple转换为list时,我试图按如下方式迭代它:

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

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

为什么?

2 个答案:

答案 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))

您正尝试从每个元素创建一个列表 - 而且您无法从datedatetime创建列表。

将序列类型从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])