鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖

[技术交流] 求问 如何计算 range() 的长度

[复制链接]
发表于 2020-4-2 13:55:13 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-2 13:21
还不如直接range(0,10,2).__len__()

这个我知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-2 13:59:13 | 显示全部楼层
这个问题有点意思
a=range(0,100,2)
print(a.start)
print(a.stop)
print(a.step)
print((a.stop-a.start)/a.step)
print(len(a))
print(a.__len__())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-2 15:03:22 | 显示全部楼层
sunrise085 发表于 2020-4-2 13:59
这个问题有点意思


感谢回答,不过这个式子不适用于range(-999, -998, -999),range(-99, -98, 2),range(1,2,3)等部分答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-2 21:05:14 | 显示全部楼层
偷偷参考一下range源代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-3 09:40:05 | 显示全部楼层
本帖最后由 lixiangyv 于 2020-4-3 09:41 编辑

直接用 len 来就行。

例子:
len(range(1, 10))
len(range(-999, 999, 9))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-3 14:02:23 | 显示全部楼层
我认为,可以用:
a = []
for i in range(1,2,3):
    a.append(i)
len(a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 11:11:39 | 显示全部楼层
请问 LZ 解决了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 11:59:45 From FishC Mobile | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 12:10:25 From FishC Mobile | 显示全部楼层
不明觉厉!

楼主的目的是研究吧?而不是实践!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-5 13:26:41 | 显示全部楼层
NZND 发表于 2020-4-3 14:02
我认为,可以用:

按你这么说,为什么我不len(range(1,2,3))呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-5 13:27:12 | 显示全部楼层
xiangjianshinan 发表于 2020-4-5 12:10
不明觉厉!

楼主的目的是研究吧?而不是实践!!!

是的,研究函数的行为
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-5 13:28:08 | 显示全部楼层
一个账号 发表于 2020-4-5 11:11
请问 LZ 解决了吗?

@_2_ 没有解决
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 13:29:27 From FishC Mobile | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-5 13:28
@_2_ 没有解决

……还是看看源码吧,别自己纠结了……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 14:24:59 | 显示全部楼层
_2_ 发表于 2020-4-5 13:29
……还是看看源码吧,别自己纠结了……


源代码应该是用 C 写的。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 14:31:23 From FishC Mobile | 显示全部楼层
一个账号 发表于 2020-4-5 14:24
源代码应该是用 C 写的。。。

……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-5 14:46:46 | 显示全部楼层
_2_ 发表于 2020-4-5 13:29
……还是看看源码吧,别自己纠结了……

之前看过了,根本不知道应该是哪个函数……一堆
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 15:57:14 | 显示全部楼层
哎,真是搞不懂。不知道range的长度不是用len就能搞定了吗?比如:
>>> len(range(5))
5
>>> len(range(1,5))
4
>>> len(range(1,5,2))
3
>>>
但是注意,range不包含最后一个数字,包含第一个数字。
或者,用数学也是可以解决的。
如果range就一个参数,那长度就是那个参数。
如果range有两个参数,那长度就是第二个参数减第一个参数。
如果range有三个参数,那就是去掉小数点的第二个参数减第一个参数再加1(如果第二个参数减第一个参数没有小数点就省略)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-7 16:33:57 | 显示全部楼层
陈尚涵 发表于 2020-4-7 15:57
哎,真是搞不懂。不知道range的长度不是用len就能搞定了吗?比如:

但是注意,range不包含最后一个数字 ...

1L我说过了,我是要尝试自己实现一个range,难道你说的这个我不知道?

一个参数和两个参数就不用说了,地球人都知道怎么算
有三个参数的时候,你说
去掉小数点的第二个参数减第一个参数再加1(如果第二个参数减第一个参数没有小数点就省略)。
请问 range(1,10,2) ,您如何解释?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 02:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表