我有一个变量x
。我需要创建一个列表,如
lst=[0,x,x,2*x,2*x,3*x,3*x,N*x,N*x]
最多N
似乎这应该是直截了当但我有点卡住了。任何帮助表示赞赏。
我不明白这个问题是如何重复的
更新....
所以我这样做了。
import numpy as np
N=4
lst=[0]
x=1.2
for i in np.arange(1,N+1):
seed=[1,1]
for j in seed:
lst.append(i*x)
lst= [0, 1.2, 1.2, 2.3999999999999999, 2.3999999999999999, 3.5999999999999996, 3.5999999999999996, 4.7999999999999998, 4.7999999999999998]
这感觉就像一个可怕的黑客。
必须有一个更优雅的解决方案。
答案 0 :(得分:1)
你可以这样做
>>> n=4
>>> x=1.2
>>> lst=[ i*x for i in range(n+1) for _ in range(2 if i else 1) ]
>>> lst
[0.0, 1.2, 1.2, 2.4, 2.4, 3.5999999999999996, 3.5999999999999996, 4.8, 4.8]
>>>
修改
或一个列表理解,没有别的
conditional aggregation
(注意如果你在python 2中使用xrange)
答案 1 :(得分:0)
您可以使用列表理解来完成此操作。它并不像你开始使用的代码那样清晰。
>>> N=4
>>> x=1.25
>>> lst = [0] + [i//2 * x for i in range(2, 2*N+2)]
>>> lst
[0, 1.25, 1.25, 2.5, 2.5, 3.75, 3.75, 5.0, 5.0]