gpt4 book ai didi

python - 生成奇数列表时出现内存错误

转载 作者:行者123 更新时间:2023-12-01 03:51:43 25 4
gpt4 key购买 nike

请看下面的代码。它创建一个包含 1 到 100 之间所有奇数的列表。然后,它将该列表分成多个子列表,每个子列表都比前一个大一个元素。

mylist = list(range(1, 100, 2))
out = []
i = 1 # Start off with size 1, because we don't care about the initial empty list
tri = 0
while tri+i < len(mylist):
tri = i*(i+1)//2 # Get sum of 0+1+2+..+i
out.append(mylist[tri-i:tri])
i+=1
print(out)

我想使用此代码创建一个函数,该函数接受一个输入 (n),该输入将对应于新子列表列表 (out) 的第 (n-1) 个索引,并对该子列表中的所有元素求和。我已获取输入 n 并将其提高到其本身的幂加 1 (n**(n+1)),但我不断收到超过 n = 5 的内存错误。这是产生错误的实验代码。

n = 10
mylist = list(range(1,n**(n+1), 2))
out = []
i = 1
while len(mylist):
out.append(mylist[:i])
mylist = mylist[i:]
i+=1
print(sum(out[n-1]))

Traceback (most recent call last):
File "python", line 2, in <module>
MemoryError

编辑(澄清信息):我想创建一个函数,当给定输入(n)时,它将转到此子列表列表的 n-1 索引并对列表的元素求和。我正在研究一个Python挑战问题,它被呈现为一个由奇数组成的数字三角形,其中金字塔的顶部是1,然后下一行是3和5,依此类推。因此,如果给定 n,则转到三角形中的第 n 行并将该行的数字相加。希望这有助于解释。

编辑2:要获取从1开始并以1递增的数字三角形的第n行的总和,以下代码通过了测试。但是,这不适用于由所有奇数、所有偶数或任何非单一递增数字系列组成的数字三角形:

def triangle_row_sum(n):
last_in_row = sum(range(1, n+1))
first_in_row = last_in_row - (n-1)
p = sum(range(first_in_row, last_in_row + 1))
return p

但是,我仍在研究以 1 开头的奇数三角形的解决方案。

最佳答案

由于这是一个挑战,我会为您指出正确的方向:

您不需要将三角形存储在内存中。您想要的是弄清楚如何计算指定线处三角形中的数字:

1)    1
2) 2 3
3) 4 5 6
4) 7 8 9 10

如果我想要第 4 行,则从列表中的第 7 个数字开始,到第 10 个数字结束。有没有办法,对于第 n 行,找出 start 数字和 end 数字是什么。那么你就不必将树存储在内存中,你只需计算起始数字和结束数字,然后将它们相加即可。

关于python - 生成奇数列表时出现内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38129000/

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