쐐기
중첩 된 목록을 병합 파이썬이에 의미 :
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]