Python修改错误列表?

标签 python list primes nested-loops

我正在尝试使用 this 生成素数列表方法。我需要遍历每个数字 2...n 并检查它是否为 2...n 的倍数。出于某种原因,错误的列表似乎正在被修改。

import sys
import argparse
import math

parser = argparse.ArgumentParser(description='find the largest prime factor of a number')
parser.add_argument('n', type=int, help='number')
args = parser.parse_args()

sieve = []
for i in range(2,args.n+1): sieve.append(i) # tried int(i)


copy1 = sieve # tried making extra copies. . .
copy2 = sieve
copy3 = sieve
#print int(math.sqrt(args.n))

for index, i in enumerate(copy1):
    #print index, i
    for ii in copy2:
        #print ii
        if i % ii == 0:
            sieve[index]= None


print sieve

我收到以下错误:

Traceback (most recent call last):  
  File "3.py", line 22, in <module>
    if i % ii == 0: TypeError: unsupported operand type(s) for %:
'int' and 'str'

最佳答案

你不是在复制。您正在使用引用,因此 copy1copy2copy3 都引用同一个列表 -- sieve .如果要复制,请使用:

copy1 = sieve[:]

这将创建 sieve 的副本并将其分配给 copy1

关于Python修改错误列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4337106/

相关文章:

python - Python list 和 dict 的一些奇怪行为

python - 使用同一 Dataframe 中另一列的 int 作为索引获取列中的列表值

通过试验划分进行素数条件测试

Python SQLite - 缓慢的更新记录

python - 使用 Python 请求通过 POST 请求发送图像

java - 使用java流过滤大量数据会导致性能下降吗?

python - 我如何检查 2 个多项式是否同余模 (h(x), n)?

math - 有没有办法找到第n个素数的近似值?

python - 如何为句子中的每个单词分组?

python - 将列表解析为 url 字符串