这不是将2d列表转换为1d列表。这会将一个列表元素(恰好是一个列表)转换为包含列表中的多个元素。输入的不是列表列表。
我有一个如下列表:
x = [1, [2,3,4], 5,....]
我想将其转换为:
x = [1, 2, 3, 4, 5]
我知道以下内容会起作用:
y = []
for _ in x:
if isinstance(_, list):
for i in _:
y.append(i)
else:
y.append(_)
但是希望有更多类似以下内容的pythonic方式(显然行不通):
x = [2, _ for _ in [2,3,4], 5]
您可以这样进行(使列表均匀,然后组合元素):
>>> x = [1, [2, 3, 4], 5]
>>> sum([[i] if not isinstance(i, list) else i for i in x], [])
[1, 2, 3, 4, 5]
另一个解决方案functool.reduce
:
>>> from functools import reduce
>>> a = [1, [2, 3, 4], 5]
>>> reduce(lambda x, y: [x] + y if not isinstance(x, list) else (x + [y] if not isinstance(y, list) else x + y), a)
[1, 2, 3, 4, 5]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句