回答

收藏

为什么“1000000000000000 in range(1000000000000001)”在 Python 3 中如

技术问答 技术问答 290 人阅读 | 0 人回复 | 2023-09-12

据我所知,该range()函数实际上是 Python 3 中的一种对象类型,它动态生成其内容,类似于生成器。/ F$ [  M2 {. o: q& B6 K
在这种情况下,我预计以下行动将花费太多的时间,因为要确定 1万亿是否在此范围内,必须产生 1万亿:
; H8 d% o+ j: W2 v9 `  [0 T
    1_000_000_000_000_000 in range(1_000_000_000_000_001)" L: X& i4 f; Y" _: j  s/ L
另外:似乎无论我加多少个零,计算或多或少都需要同样的时间(基本上是瞬时的)。5 v7 A7 c. x. Y: f  b
我也尝试过这样的事情,但计算仍然几乎是即时的:
5 w7 \! Y9 G7 k+ W1 d
    # count by tens1_000_000_000_000_000_000_000 in range(0,1_000_000_000_000_000_000_001,10). C; r( |! p. o2 h8 ]- R$ Y
如果我试图实现自己的范围函数,结果就不太好了!2 @% z4 Z5 N6 P; a; Y* w
[code]def my_crappy_range(N):    i = 0    while i 引擎盖下的range()是什么对象让它这么快?
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则