2016-01-06 96 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) 
相關問題