求问 如何计算 range() 的长度
本帖最后由 永恒的蓝色梦想 于 2020-4-8 16:09 编辑本贴不是代码问题,所以就不贴代码了{:10_327:}
想自己实现一个 range ,想了半天没想出来 range 的长度到底怎么算{:10_262:}
求数学大佬帮忙{:10_266:}给个式子就行
可能是题目表达的不明白,补充说明一下
假设我们有一个 range 对象 range(start,stop,step),那么 range(start,stop,step).__len__() 返回的值应该是?
楼主自己解决了def getRangeLength(start,stop,step):
if step<0:
start,stop=stop,start
step=-step
if start>=stop:
return 0
return ((stop-start)-1)//step+1 没人吗{:10_266:} 本帖最后由 wuqramy 于 2020-4-2 11:57 编辑
当我什么也没有说 字符串?列表?
len一下即可。 没太懂这个问题,range(a, b)是指a<=N<b,是这个吗? heidern0612 发表于 2020-4-2 11:56
字符串?列表?
len一下即可。
我说了是range,而且是计算range的长度, 陆七曜 发表于 2020-4-2 11:59
没太懂这个问题,range(a, b)是指a
求range(start,stop,step)可以迭代多少个元素 好麻烦……https://i0.hdslb.com/bfs/emote/a523f3e4c63e4db1232365765d0ec452f83be97e.png 本帖最后由 _2_ 于 2020-4-5 11:58 编辑
永恒的蓝色梦想 发表于 2020-4-2 12:02
求range(start,stop,step)可以迭代多少个元素
当我什么也没说 _2_ 发表于 2020-4-2 12:20
一个没什么卵用的帖子
https://fishc.com.cn/forum.php?mod=viewthread&tid=150837
……这个早知道了 永恒的蓝色梦想 发表于 2020-4-2 12:02
求range(start,stop,step)可以迭代多少个元素
>>> len(list(range(0,10,2)))
5 qiuyouzhi 发表于 2020-4-2 12:25
……我需要一个式子{:10_262:} 本帖最后由 一个账号 于 2020-4-2 12:43 编辑
>>> tuple(range(0, 10, 2)).__len__()
5
这样很浪费资源 应该是这样的吧
>>> def len_range(start, stop, step=1):
return (stop - start) // step
>>> len_range(2, 10)
8
>>> len_range(2, 8, 2)
3 zltzlt 发表于 2020-4-2 12:58
应该是这样的吧
我也有想过这个,但是 range(-999, -998, -999) ,range(-99, -98, 2),还有许多,都不符合这个式子……{:10_262:}
还是谢了{:10_248:} 永恒的蓝色梦想 发表于 2020-4-2 13:18
我也有想过这个,但是 range(-999, -998, -999) ,range(-99, -98, 2),还有许多,都不符合这个式子……{ ...
没考虑负数的情况……{:10_269:} zltzlt 发表于 2020-4-2 13:19
没考虑负数的情况……
不止是负数,range(1,2,3) 也不符合……
好难啊…… 一个账号 发表于 2020-4-2 12:42
这样很浪费资源
还不如直接range(0,10,2).__len__(){:10_248:} 永恒的蓝色梦想 发表于 2020-4-2 13:20
不止是负数,range(1,2,3) 也不符合……
好难啊……
为什么不直接用 range().__len__() 呢 zltzlt 发表于 2020-4-2 13:22
为什么不直接用 range().__len__() 呢
我试图完整的实现range……{:10_262:}
页:
[1]
2