繁体   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