python中自定义range()函数
随着自己对python的使用越来越频繁,在使用range()函数进行遍历时一直觉得range()函数只能步进整数很鸡肋,若我们需要使用小数步进时还需要导入numpy库;这就很烦了。因为自己最近刚好用到了小数步进;特此将自己改写的让range()函数贴上来,希望有用的上的同学可以使用。
def myrange(i:float,j:float,k=1)->list:
xlen=str((len(str(k-int(k)))-2)/10)+"f" #根据k步长,判断format位数公式小数点位数/10+"f"
lista = []
if i<j:
while i<j:
lista.append(format(i, xlen))
i+= k
return list(map(lambda x:float(x), lista))
if i>j:
while i>j:
lista.append(format(i, xlen))
i-= k
return list(map(lambda x:float(x), lista))
A = myrange(0, 10, 0.1)
B = myrange(10, 0, 0.1)
# 输出测试
print(A)
print(B)
# 输出结果
[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
[1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1, 0.0]
在使用的时候需要注意的时在进行从大到小进行range的时候不需要将步进值设为负的,直接是多少就多少好了。
在写这个函数的时候大部分参考了网上的资源,由于当初使用时没有将链接记下来;在此向有关的博主们致谢。