2017-10-14 77 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