簡體   English   中英

用於列表或子列表中的項目

[英]for item in list or in sublist

我有一個列表,其中可能包含也可能不包含其他子列表。 我需要為列表中的每個項目以及列表中任何子列表中的每個項目運行代碼塊。 這是我的for語句現在的樣子:

for item in mylist:
    ...

什么是重寫所以最有效的方法item是從來沒有的子列表中的一個,所以該代碼將再次在所有子表的運行每一個項目,除了列表中的每個項目?

有兩種通用的方法可以遞歸進行:

def unroll_recursive(lst):
    for el in lst:
        if isinstance(el, list):
            yield from unroll_recursive(el)
        else:
            yield el

或反復

from collections import deque
def unroll_iterative(lst)
    q = deque(lst)
    while q:
        el = q.popleft()
        if isinstance(el, list):
            q.extend(el)
        else:
            yield el

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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