gpt4 book ai didi

python "IndexError: index 8 is out of bounds for axis 0 with size 8"

转载 作者:太空宇宙 更新时间:2023-11-04 02:04:15 25 4
gpt4 key购买 nike

这个问题要求我编写一个函数,该函数根据给定函数的输出编译质数列表,该函数给出 2 个列表,一个从 2 到任意数字的数字列表,第二个列表与第一个列表带有“真”或“假”值,具体取决于第一个列表中的数字是否为素数。

我不知道我的代码是否根本无法回答这个问题,或者我是否在正确的轨道上只是犯了一个错误...

如有任何帮助,我们将不胜感激。

问题:

编写一个接受单个输入 N 的函数(称为 primes_list)。此函数必须使用 prime_sieve 函数来计算并返回仅包含小于或等于 N+1 的素数的数组(或列表)。

例如,如果 N=8 此函数应返回 [2,3,5,7]

给定的代码:

import numpy as np

def prime_sieve(N):
nums = np.arange(2, N+2, 1)
mask = []
for n in nums:
mask.append(True)
for n in nums:
for i in np.arange(2*n-2, N, n):
mask[i] = False
return nums, np.array(mask)

numbers, mask = prime_sieve(8)
print(numbers)
print(mask)

[2 3 4 5 6 7 8 9]
[ True True False True False True False False]

我的代码:

import numpy as np

def primes_list(N):
numbers, mask = prime_sieve(N)
primes = []
for n in numbers:
if mask[n] == "true":
primes.append(numbers[n])
return primes

print(primes_list(8))

但这给出了一个错误:

---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-60-4ea4d2f36734> in <module>
----> 2 print(primes_list(8))

<ipython-input-59-a5080837c5c8> in primes_list(N)
6 primes = []
7 for n in numbers:
----> 8 if mask[n] == "true":
9 primes.append(numbers[n])
10 return primes

IndexError: index 8 is out of bounds for axis 0 with size 8

最佳答案

你的 n,你用来分割你的列表 mask 是一个不适合索引的数字列表(因为它总是包含 N,N+1 ,而 mask 的最后一个索引是 N-1)。

此外,第二个列表 mask 包含 Bool 而不是 str,因此您比较 mask[n] == 'true '总是 返回False

考虑到以上几点,您的 primes_list 可以是:

def primes_list(N):
numbers, mask = prime_sieve(N)
primes = []
for i, n in enumerate(numbers): # <<< added enumerate
if mask[i]: # <<< removed unnecessary comparison
primes.append(n) # <<< append n directly
return primes

返回:

[2, 3, 5, 7]

本应如此。

关于 python "IndexError: index 8 is out of bounds for axis 0 with size 8",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55060891/

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