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)
解决方案之一(使用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)
使用嵌套列表理解:
>>> 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)