如果列表包含大小不等的元组,如何进行迭代?

时间:2019-04-11 08:12:45

标签: python python-3.x

我们已经知道,如果我们有一个包含大小相等的元组的列表,那么我们可以像下面这样迭代,

list1 =[(1,2),(3,4),(5,6)]
for (i,j) in list1:
    print(i,j)

如果我有一个元组列表如下:

list1 =[(1,2,3),(4,5),(7,8,9),(10,11)] 

除了使用嵌套的for循环之外,还有其他方法可以遍历所有元素吗?

2 个答案:

答案 0 :(得分:6)

如果您已经知道最小尺寸,则可以打开最小尺寸和剩余尺寸的包装:

>>> list1 =[(1,2,3),(4,5),(7,8,9),(10,11)] 
>>> for i, j, *r in list1:
...     print(i, j, r)
... 
1 2 [3]
4 5 []
7 8 [9]
10 11 []

答案 1 :(得分:0)

您可以打开元组并将其转换为列表,并在len()上使用list来获取其size,而无需事先知道:

list1 =[(1,2,3),(4,5),(7,8,9),(10,11)]

for elem in list1:
    print([*elem], "of size: {}".format(len([*elem])))

输出

[1, 2, 3] of size: 3
[4, 5] of size: 2
[7, 8, 9] of size: 3
[10, 11] of size: 2

编辑

如果您不希望进行任何列表转换:

print(', '.join(map(str, (elem))), "of size: {}".format(len(elem)))

输出

1, 2, 3 of size: 3
4, 5 of size: 2
7, 8, 9 of size: 3
10, 11 of size: 2