我有这样的事情:
palindromes=[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 101, 111, 121, ..., 99799, 99899, 99999]
# of course im generating it :)
def isPrime(number):
for i in range(2,int(number/2)+1):
if number%i == 0:
return True
return False
def removeNonPrimes(palindromes):
for palindrom in palindromes:
if isPrime(palindrom):
palindromes.remove(palindrom)
return palindromes
palindromes = removeNonPrimes(palindromes)
并不能消除所有非素数
我不知道为什么
最佳答案
在您的代码中:
def removeNonPrimes(palindromes):
for palindrom in palindromes:
if isPrime(palindrom):
palindromes.remove(palindrom)
return palindromes
您正在修改(使用
.remove()
)与要迭代的相同列表(使用in
)。不建议这样做,您最终可能会删除想要的其他项目。相反,请考虑列表理解:
def removeNonPrimes(palindromes):
return [p for p in palindromes if isPrime(p)]
关于python - 从列表中删除非素数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7786566/