簡體   English   中英

Python ValueError: list.remove(x): x not in list error

[英]Python ValueError: list.remove(x): x not in list error

我是一個初學者,我編寫了一個代碼,計算機將一些數字作為列表並刪除復合數字並保留素數然后打印列表。 它不適用於大於 5 的數字,並給出ValueError: list.remove(x): x not in list error.

a=list(map(int,input('Enter some numbers:').split()))
for i in range(0,len(a)):
    b=a[i]
    for j in range(2,b):
        if b%j==0:
            a.remove(b)
        else:
            pass
else:
    print('The prime numbers are:',a)

直接的問題是刪除循環:

for j in range(2,b):
    if b%j==0:
        a.remove(b)
    else:
        pass

即使在元素被移除后仍將繼續運行,因此對於b = 6 ,它將嘗試移除 6 兩次:一次用於j = 2 ,另一次用於j = 3 您可以通過在a.remove行之后添加一個break來解決它。

如果那里沒有任何事情要做,您也不需要else子句,因此可以刪除循環的最后兩行,並且您也可能會遇到i超出范圍的問題,因為您正在修改列表a在循環期間。

在迭代列表時修改列表不是一個好主意。

相反,創建一個包含素數的新列表。

def isprime(x):
  for i in range(2, math.ceil(math.sqrt(x)) + 1):
    if x % i == 0:
      return False
  return True

a = list(map(int, input('Enter some numbers:').split()))

b = [x for x in a if isprime(x)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM