[英]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.