你知道如何将python中嵌套的列表扁平化吗?
楔子
将python中嵌套的列表扁平化,指的就是:
lst = [1, [[[[3, 3], 5]]], [[[[[[[[[[[[[6]]]]], 8]]], "aaa"]]]], 250]] # 类似于上面的列表,我们要得到下面的结果 [1, 3, 3, 5, 6, 8, "aaa", 250]
那么我们要如何做呢?
yield和yield from
关于如何把一个嵌套的列表扁平化,我们需要使用yield和yield from。这两位老铁的底层实现原理我不想深究,因为牵扯的东西太多了,况且针对目前的问题我们也用不到,这里我们简单的说一下。
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]
相关推荐
坚持是一种品质 2020-11-16
zhaobig 2020-11-16
文山羊 2020-10-31
kikaylee 2020-10-31
oXiaoChong 2020-10-30
PYTandFA 2020-09-15
CloudStrife0 2020-08-23
hang0 2020-08-16
lzujiangge 2020-08-16
RocNg 2020-08-15
xiesheng 2020-08-06
Tristahong 2020-08-05
georgeandgeorge 2020-08-03
elizabethxxy 2020-07-27
flycony 2020-07-05
柠檬班 2020-07-04
magicandy 2020-07-04