回答

收藏

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

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

据我所知,该range()函数实际上是 Python 3 中的一种对象类型,它动态生成其内容,类似于生成器。
( g# G, j& s0 M9 H9 O在这种情况下,我预计以下行动将花费太多的时间,因为要确定 1万亿是否在此范围内,必须产生 1万亿:
# ~8 `3 P. K5 w' S' |
    1_000_000_000_000_000 in range(1_000_000_000_000_001)
    ' f' t' i4 a  _. d/ H
另外:似乎无论我加多少个零,计算或多或少都需要同样的时间(基本上是瞬时的)。
% G5 z, H& K" a/ E2 B6 K我也尝试过这样的事情,但计算仍然几乎是即时的:
& A% [5 K# j+ E# Z
    # count by tens1_000_000_000_000_000_000_000 in range(0,1_000_000_000_000_000_000_001,10)
    + O4 T* x$ V' @7 a  T) s
如果我试图实现自己的范围函数,结果就不太好了!
, ]' V' F, ?( P8 _  _! s[code]def my_crappy_range(N):    i = 0    while i 引擎盖下的range()是什么对象让它这么快?
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则