如何使用各种数据类型展平列表(int,tuple)

cov*_*nce 7 python tuples list flatten

假设我有一个包含一个或多个元组的列表:

[0, 2, (1, 2), 5, 2, (3, 5)]
Run Code Online (Sandbox Code Playgroud)

什么是摆脱元组的最佳方法,以便它只是一个int列表?

[0, 2, 1, 2, 5, 2, 3, 5]
Run Code Online (Sandbox Code Playgroud)

ndp*_*dpu 5

解决方案之一(使用itertools.chain):

>>> from itertools import chain
>>> l = [0, 2, (1, 2), 5, 2, (3, 5)]
>>> list(chain(*(i if isinstance(i, tuple) else (i,) for i in l)))
[0, 2, 1, 2, 5, 2, 3, 5]
Run Code Online (Sandbox Code Playgroud)


And*_*ark 5

使用嵌套列表理解:

>>> lst = [0, 2, (1, 2), 5, 2, (3, 5)]
>>> [y for x in lst for y in (x if isinstance(x, tuple) else (x,))]
[0, 2, 1, 2, 5, 2, 3, 5]
Run Code Online (Sandbox Code Playgroud)