在列表理解的每次迭代中生成多个值

我想在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方式创建这样的列表?

yyl000831 回答:在列表理解的每次迭代中生成多个值

您可以在列表理解中添加另一级别的迭代以获取平面列表:

[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)
本文链接:https://www.f2er.com/3143642.html

大家都在问