为什么“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()是什么对象让它这么快? |
|
|
|
|
|