如何在两个值之间创建一个升序列表?例如,11和16之间的列表:
[11, 12, 13, 14, 15, 16]
如何在两个值之间创建一个升序列表?例如,11和16之间的列表:
[11, 12, 13, 14, 15, 16]
当前回答
最优雅的方法是使用range函数,但是如果你想重新创建这个逻辑,你可以这样做:
def custom_range(*args):
s = slice(*args)
start, stop, step = s.start, s.stop, s.step
if 0 == step:
raise ValueError("range() arg 3 must not be zero")
i = start
while i < stop if step > 0 else i > stop:
yield i
i += step
>>> [x for x in custom_range(10, 3, -1)]
这将产生输出:
[10, 9, 8, 7, 6, 5, 4]
正如之前@Jared所表达的,最好的方法是使用range或numpy。然而,我发现代码很有趣,可以分享。
其他回答
最优雅的方法是使用range函数,但是如果你想重新创建这个逻辑,你可以这样做:
def custom_range(*args):
s = slice(*args)
start, stop, step = s.start, s.stop, s.step
if 0 == step:
raise ValueError("range() arg 3 must not be zero")
i = start
while i < stop if step > 0 else i > stop:
yield i
i += step
>>> [x for x in custom_range(10, 3, -1)]
这将产生输出:
[10, 9, 8, 7, 6, 5, 4]
正如之前@Jared所表达的,最好的方法是使用range或numpy。然而,我发现代码很有趣,可以分享。
你似乎在寻找range():
>>> x1=11
>>> x2=16
>>> range(x1, x2+1)
[11, 12, 13, 14, 15, 16]
>>> list1 = range(x1, x2+1)
>>> list1
[11, 12, 13, 14, 15, 16]
如果要增加0.5而不是1,那么:
>>> list2 = [x*0.5 for x in range(2*x1, 2*x2+1)]
>>> list2
[11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 14.0, 14.5, 15.0, 15.5, 16.0]
我来到这里是因为我想使用列表推导式创建一个增量为0.1的-10到10之间的范围。而不是像上面大多数答案那样做一个过于复杂的函数,我只是这样做了
simple_range = [ x*0.1 for x in range(-100, 100) ]
通过将范围计数更改为100,我现在通过使用标准范围函数得到了从-10到10的范围。所以如果你需要0.2,那么就做范围(- 200,200)等等
虽然@Jared关于增加0.5步长的答案有效,但由于舍入问题,它无法用于其他步长:
np.arange(11, 17, 0.1).tolist()
# [11.0,11.1,11.2,11.299999999999999, ... 16.79999999999998, 16.899999999999977]
相反,我自己也需要这样的工作,不只是挣0.5美元:
# Example 11->16 step 0.5
s = 11
e = 16
step = 0.5
my_list = [round(num, 2) for num in np.linspace(s,e,(e-s)*int(1/step)+1).tolist()]
# [11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 14.0, 14.5, 15.0, 15.5, 16.0]
# Example 0->1 step 0.1
s = 0
e = 1
step = 0.1
my_list = [round(num, 2) for num in np.linspace(s,e,(e-s)*int(1/step)+1).tolist()]
# [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
在python中,你可以很容易地做到这一点
start=0
end=10
arr=list(range(start,end+1))
output: arr=[0,1,2,3,4,5,6,7,8,9,10]
或者你可以创建一个递归函数,返回一个数组到给定的数字:
ar=[]
def diff(start,end):
if start==end:
d.append(end)
return ar
else:
ar.append(end)
return diff(start-1,end)
输出: 基于“增大化现实”技术=[10、9、8、7、6、5、4、3、2、1、0]