2017-10-14 79 views
0

我有一個包含元組的列表。每個元組擁有2個元素。我試着用下面的代碼打印出來,但它給人的錯誤消息:通過嵌套for循環的元組列表來擴充列表

TypeError: list indices must be integers or slices, not tuple

相關代碼:

for i in list: 
    for j in [1, 2]: 
     print(list[i][j]) 

隨着打印1元組的每個元素的想法,每個元素第二元組等

+0

。只要擺脫嵌套循環,並在第一個上執行'print(i [0],i [1])''。 –

回答

2

在循環中實現i實際上是一個元組(列表的一個元素)。所以,您只需要打印i的元素,如i[j]list[i]是沒有意義的,因爲i應該是一個整數,但它實際上是列表的一個元素,即元組。你也必須得到這樣的錯誤TypeError: list indices must be integers, not tuple。好吧,我。所以這應該是對你的暗示/解釋。

lst = [(1,2),(5,9)] 
for i in lst: 
    for j in [0, 1]: 
     print(i[j]) 
    print 

輸出:

1 2 
5 9 
+0

儘量不要使用變量名「list」進行賦值,可以使用list_或完全重命名。你不應該分配任何東西給stdlib名字 –

+0

op,很好的時機:)。在[i] [j]'之後刪除逗號並在'print's周圍放置逗號,並且您的代碼將交叉兼容並正常工作:) –

+0

您忘記了第二個打印語句中的缺口:) –

0

您可以使用嵌套列表理解:

[i for subset in list for i in subset] give you flat list 

這是更Python!

0

正如@ Miraj50說,'i`已經是一個元組可以解壓的元組的循環

>>> tup_list = [(1,2), (3,4)] 
>>> for a,b in tup_list: 
...  print(a,b) 
... 
1 2 
3 4