在位置插入多个元素列表

时间:2015-02-19 16:58:23

标签: python

有没有办法在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可以以任何格式返回数据)。

感谢,

2 个答案:

答案 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]

这已经足够复杂了,我会问一个单线方法。可能更容易理解这一点。

相关问题