簡體   English   中英

檢索值形成嵌套列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM