我有一个包含值
的列表b(0,3,[(1,0),(0,-1)])
我将如何重复遍历此列表,以便从外部列表和元组中获取值? 我目前的想法是使变量等于b [0]和b [1],因为这不会扩展,它只会保持2个值。然而,元组列表可以扩展,所以我将如何通过列表来获取元组?
感谢您的帮助。
答案 0 :(得分:2)
您可以通过定义自定义方法来实现:
b = (0, 3, [(1,0),(0,-1)])
def print_list(l):
for i in l:
if isinstance(i, list) or isinstance(i, tuple):
print_list(i)
else:
print i
>>> print_list(b)
0
3
1
0
0
-1
答案 1 :(得分:0)
我知道,你要求迭代,但是如果结构(嵌套的元组,列表和元组)具有固定长度,那么你可以使用解包,这允许在一个步骤中将值分配给某个变量。
>>> data = (0,3,[(1,0),(0,-1)])
>>> a, b, ((x1, y1), (x2, y2)) = data
>>> a
0
>>> b
3
>>> x1
1
>>> y1
0
>>> x2
0
>>> y2
-1
答案 2 :(得分:0)
如果您使用的是Python 3.3+,则可以执行以下操作:
def flatten(l):
for i in l:
if hasattr(i, '__iter__'):
yield from flatten(i)
else:
yield i
比调用方法:
nested_list = (0,3,[(1,0),(0,-1)])
for i in flatten(nested_list):
print(i)
在低于3.3的Python版本中,你不能使用'yield from',而是必须这样做:
def flatten(l):
for i in l:
if hasattr(i, '__iter__'):
for i2 in flatten(i):
yield i2
else:
yield i