有没有办法在python中的列表解析期间将多个元素插入列表?
例如:
def a():
return [6,7,8]
[a() if i==2 else i for i in range(4)]
[0, 1, [6, 7, 8], 3]
是否可以一次性获得一个平面列表(函数a可以以任何格式返回数据)。
感谢,
答案 0 :(得分:1)
def a(): return [6,7,8]
l = [a() if i==2 else [i] for i in range(4)]
flat = [item for sublist in l for item in sublist]
如果你结合最后两行,你也可以一次性 ,但这不会是非常pythonic。
答案 1 :(得分:1)
这看起来有点讨厌,但可以使用各种数据类型:
import itertools
def a():
return [6,7,8]
l = list(itertools.chain.from_iterable([a() if i==2 else [i] for i in range(4)]))
print(l)
>>>[0, 1, 6, 7, 8, 3]
我们可以看到这也适用于a
的其他返回类型:
def a():
return {6,7,8}
>>>[0, 1, 8, 6, 7, 3]
这已经足够复杂了,我会问一个单线方法。可能更容易理解这一点。