Python |使用One-Liner在每个迭代的列表中插入两个项目

时间:2016-08-20 21:53:30

标签: python for-loop

是否可以在列表中插入2个单行项目? 例如,通过类似[1, 2, 3, 4]

的内容获取[ x, x+1 for x in [1, 3]]

2 个答案:

答案 0 :(得分:1)

不,你不能这样做。相反,您可以在itertools.chain.from_iterable中使用生成器表达式来链接可迭代项目或使用嵌套列表理解(不像 chain.from_iterable 那样优化,因为您必须创建然后用另一个循环解压缩它们。)

>>> from itertools import chain
>>> l = [(1, 2), (3, 5)]
>>> 
>>> list(chain.from_iterable(i for i in l))
[1, 2, 3, 5]

在python 3.5+中,您可以在列表中解压缩迭代,如下所示,但仍然不在迭代时间。

>>> a = (1, 2)
>>> b = (3, 5)
>>> 
>>> [*a, *b]
[1, 2, 3, 5]

答案 1 :(得分:1)

[item for sublist in [ [x, x+1] for x in [1, 3] ] for item in sublist]