如何在 python shorthand 列表中为每次迭代添加 2 个元素?

How do I add 2 elements for each iteration in a python shorthand list?

我想写一个像 [i*2, i*3 for i in range(10)] 这样的列表,这样我就可以得到 [0, 0, 2, 3, 4, 6, 6, 9, 8, 12...] 的输出(所以对于 range(10) 中的每个元素,我想将 2 个元素添加到来自两次计算的列表)。

使用itertools.chain.from_iterable,或any other Python iterable-flattening approach

>>> list(itertools.chain.from_iterable([(i*2, i*3) for i in range(10)]))
[0, 0, 2, 3, 4, 6, 6, 9, 8, 12, 10, 15, 12, 18, 14, 21, 16, 24, 18, 27]

更新:

[ i*k for i in range(10) for k in (2, 3) ]

原文:

通过列表理解保持简单:

[ i*k for i in range(10) for k in range(2,4) ]

列表理解中的两个 for 语句如何?

[i*j for i in range(10) for j in [2, 3]]
sum((map(lambda x: [x*2, x*3], range(10))), [])

输出

[0, 0, 2, 3, 4, 6, 6, 9, 8, 12, 10, 15, 12, 18, 14, 21, 16, 24, 18, 27]

我们也可以这样做,没有任何循环。