如何在 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]
我们也可以这样做,没有任何循环。
我想写一个像 [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]
我们也可以这样做,没有任何循环。