gpt4 book ai didi

python - 如何在没有列表的情况下计算非常大的数字

转载 作者:行者123 更新时间:2023-12-04 16:23:25 25 4
gpt4 key购买 nike

我正在尝试完成一个编码挑战,该挑战要求我计算 1 到 X 之间的所有数字,其中最多可以达到 400,000,000,000,000,000

我的方法是遍历一个列表,最后将位数添加到我的结果中,如下所示:

def page_digits(pages):
list_of_pages = list(range(1, pages + 1))
res = 0
for num in list_of_pages:
res += len((str(num)))
return res

但显然创建一个介于 1 和那个大数字之间的每个数字的列表需要大量存储空间,并且运行它会返回“MemoryError Line 2”

我还能怎么做呢?或避免问题

最佳答案

没有理由需要将范围转换为列表。

>>> def page_digits(pages):
... res = 0
... for num in range(1, pages + 1):
... res += len(str(num))
... return res
...
>>> page_digits(100000)
488895

调用 list 构造函数会强制范围中的每个元素单独存储在内存中,但是常规的 range 对象非常节省内存(它只包含 args你在构造时传递了它)同时仍然是可迭代的。

您可能需要将范围转换为列表的唯一原因是改变其中的各个元素(您不能对范围进行此操作)。

关于python - 如何在没有列表的情况下计算非常大的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69256649/

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