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