我想在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)]
不起作用。
是否有任何Python方式创建这样的列表?
我想在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)]
不起作用。
是否有任何Python方式创建这样的列表?
您可以在列表理解中添加另一级别的迭代以获取平面列表:
[i**exp for i in range(10) for exp in [1,2]]
# [0,1,2,4,3,9,16,5,25,6,36,7,49,8,64,81]
或者您可以使用itertools.chain
:
from itertools import chain
list(chain.from_iterable((i,i**2) for i in range(10)))
# [0,81]
尽管我会考虑numpy
来完成这项任务:
(np.arange(10)**np.arange(1,3)[:,None]).ravel('F')
array([ 0,81],dtype=int32)