[英]Retrieving values form a nested list
我有一個包含值的列表b
(0,3,[(1,0),(0,-1)])
我將如何重復遍歷此列表,以便從外部列表和元組中獲取值? 我目前的想法是使變量等於b [0]和b [1],因為這不會擴展,它只會保持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
我知道,你要求迭代,但是如果結構(嵌套的元組,列表和元組)具有固定長度,那么你可以使用解包,這允許在一個步驟中將值分配給某個變量。
>>> 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
如果您使用的是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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.