gpt4 book ai didi

Python、len 和整数的大小

转载 作者:太空狗 更新时间:2023-10-30 00:24:42 25 4
gpt4 key购买 nike

因此,当某些内容的长度接近 1<<32(int 的大小)时,cPython (2.4) 会出现一些有趣的行为。

r = xrange(1<<30)
assert len(r) == 1<<30

很好,但是:

r = xrange(1<<32)
assert len(r) == 1<<32
ValueError: xrange object size cannot be reported`__len__() should return 0 <= outcome

亚历克斯的 wowrange也有这种行为。 wowrange(1<<32).l很好,但是 len(wowrange(1<<32))不好。我猜这里发生了一些浮点行为(被解读为负面)。

  1. 这里到底发生了什么? (这在下面已经很好地解决了!)
  2. 我怎样才能绕过它?多头?

(如果人们想直接解决这个问题,我的具体申请是 random.sample(xrange(1<<32),ABUNCH))!)

最佳答案

cPython 假定列表适合内存。这扩展到行为类似于列表的对象,例如 xrange。本质上,len 函数期望 __len__ 方法返回可转换为 size_t 的内容,如果逻辑元素的数量太大,即使这些元素实际上并不存在于内存中。

关于Python、len 和整数的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2128989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com