我想生成一个列表,比如说,python中的[0, 0^2, 1, 1^2, ... 9, 9^2]
。但是,[(i,i**2) for i in range(10)]
返回一个元组列表,[*(i,i**2) for i in range(10)]
不工作。
有什么节奏曲的方法来创造这样的清单吗?
发布于 2019-11-07 15:24:11
您可以在列表理解中添加另一级别的迭代,以获得一个平面列表:
[i**exp for i in range(10) for exp in [1,2]]
# [0, 0, 1, 1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, 7, 49, 8, 64, 9, 81]
或者你可以使用itertools.chain
from itertools import chain
list(chain.from_iterable((i,i**2) for i in range(10)))
# [0, 0, 1, 1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, 7, 49, 8, 64, 9, 81]
虽然我认为numpy
可以完成这样的任务:
(np.arange(10)**np.arange(1,3)[:,None]).ravel('F')
array([ 0, 0, 1, 1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, 7, 49, 8,
64, 9, 81], dtype=int32)
https://stackoverflow.com/questions/58751863
复制相似问题