如何在两个值之间创建一个升序列表?例如,11和16之间的列表:
[11, 12, 13, 14, 15, 16]
如何在两个值之间创建一个升序列表?例如,11和16之间的列表:
[11, 12, 13, 14, 15, 16]
当前回答
在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]
其他回答
如果你正在寻找适用于浮点类型的范围函数,那么这是一篇非常好的文章。
def frange(start, stop, step=1.0):
''' "range()" like function which accept float type'''
i = start
while i < stop:
yield i
i += step
# Generate one element at a time.
# Preferred when you don't need all generated elements at the same time.
# This will save memory.
for i in frange(1.0, 2.0, 0.5):
print i # Use generated element.
# Generate all elements at once.
# Preferred when generated list ought to be small.
print list(frange(1.0, 10.0, 0.5))
输出:
1.0
1.5
[1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5]
假设你想要一个x到y的范围
range(x,y+1)
>>> range(11,17)
[11, 12, 13, 14, 15, 16]
>>>
3使用list。x的支持
@YTZ的回答很适合我。我必须生成一个从0到10000的列表,步长为0.01,由于舍入问题,在每次迭代中简单地添加0.01是行不通的。
因此,我采纳了@YTZ的建议,编写了如下函数:
import numpy as np
def generate_floating_numbers_in_range(start: int, end: int, step: float):
"""
Generate a list of floating numbers within a specified range.
:param start: range start
:param end: range end
:param step: range step
:return:
"""
numbers = np.linspace(start, end,(end-start)*int(1/step)+1).tolist()
return [round(num, 2) for num in numbers]
使用范围。在Python 2中,它直接返回一个列表:
>>> range(11, 17)
[11, 12, 13, 14, 15, 16]
在Python 3中,range是一个迭代器。将其转换为列表:
>>> list(range(11, 17))
[11, 12, 13, 14, 15, 16]
注意:范围内的第二个数字(start, stop)是排他的。所以,stop = 16+1 = 17。
要增加0.5,可以考虑使用numpy的arange()和.tolist():
>>> import numpy as np
>>> np.arange(11, 17, 0.5).tolist()
[11.0, 11.5, 12.0, 12.5, 13.0, 13.5,
14.0, 14.5, 15.0, 15.5, 16.0, 16.5]
参见:如何为range()使用十进制步进值?
最优雅的方法是使用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。然而,我发现代码很有趣,可以分享。