gpt4 book ai didi

Python 给出内存错误

转载 作者:行者123 更新时间:2023-12-01 05:05:23 27 4
gpt4 key购买 nike

大家好,我对 python 很陌生。我试图通过在线编码网站解决这个问题

A=3,B=5
A 表 = 3 , 6 , 9 , 12 ,15 ,18 等
B = 5 , 10 , 15 , 20 等表
合并后:3,5,6,9,10,12,15,15,18,20等
删除重复项:3、5、6、9、10、12、15、18、20 等
对于 N= 2 ,超表的第二个元素是 5

问题是我可以获得 A 和 B 的有限范围的答案,但是当我对第 10^9 个元素执行此操作时,我会出现内存错误。

from array import *
import itertools
array1=[]
array2=[]
A=int(input())
B=int(input())
N=int(input())
for i in range(0,10**9):
try:
array1.append(i+1 * A)
except MemoryError :
break

for j in range(0,10**9):
try:
array2.append(j+1 * B)
except MemoryError :
break
filter(None ,array1)
filter(None ,array2)
array3 = array1 + array2
array3 = sorted(set(array3))
print (array3[N])

回溯(最近一次调用最后一次):
文件“C:/Users/Clinton D/Desktop/supertables.py”,第 21 行,位于
数组3 = 数组1 + 数组2内存错误

最佳答案

如果你确实需要使用这个大数据集,你应该使用pandasnumpy来处理它。

但是,如果您正在尝试解决编码高尔夫问题,请尝试使用较小的数据集来测试您的方法。无论如何,您可以考虑使用迭代器代替列表,并使用 iterator.chain 来连接迭代器。

from itertools import chain

A=int(input())
B=int(input())
N=int(input())

array_a = (i*A for i in range(10**4))
array_b = (i*B for i in range(10**4))
array_c = chain(array_a, array_b)
c = sorted(set(array_c))

print(c[N])

关于Python 给出内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25161208/

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