당신은 파이썬 중첩 된 목록을 평평하게하는 방법을 알아?

쐐기

중첩 된 목록을 병합 파이썬이에 의미 :

lst = [1, [[[[3, 3], 5]]], [[[[[[[[[[[[[6]]]]], 8]]], "aaa"]]]], 250]]
# 类似于上面的列表,我们要得到下面的结果
[1, 3, 3, 5, 6, 8, "aaa", 250]

그래서 우리는 어떻게해야합니까?

에서 和 수율을 얻을 수

중첩 된 목록을 평평하게하는 방법, 우리는의 수율과 수율을 사용해야합니다. 너무 많은 일들이 우리가 더 적은, 우리가 단지에 대한 이야기보다는이 현재의 문제에 대한 외에 관여하기 때문에, 나는 바닥에 도착하지 않으려는이 두 오래 된 철을 기본 원칙.

def foo():
    yield [1, 2, 3]


def bar():
    yield from [1, 2, 3]


print(foo().__next__())  # [1, 2, 3]
print(bar().__next__())  # 1


"""
我们看到关于yield,它是把yield后面的整个元素都迭代出来
但是对于yield from,它的后面必须跟着一个可迭代的对象,然后依次迭代这个可迭代对象里面的每一个元素
"""

그래서 우리는 방법을 발견했다.

def flat(l: list):
    for _ in l:
        if isinstance(_, list):
            yield from flat(_)
        else:
            yield _


lst = [1, [[[[3, 3], 5]]], [[[[[[[[[[[[[6]]]]], 8]]], "aaa"]]]], 250]]
print([_ for _ in flat(lst)])  # [1, 3, 3, 5, 6, 8, 'aaa', 250]

추천

출처www.cnblogs.com/traditional/p/12422934.html