Python modifying wrong list? -
i'm trying generate list of primes using this method. need loop through every number 2...n , check multiples of 2...n. reason, wrong list seems getting modified.
import sys import argparse import math parser = argparse.argumentparser(description='find largest prime factor of number') parser.add_argument('n', type=int, help='number') args = parser.parse_args() sieve = [] in range(2,args.n+1): sieve.append(i) # tried int(i) copy1 = sieve # tried making copies. . . copy2 = sieve copy3 = sieve #print int(math.sqrt(args.n)) index, in enumerate(copy1): #print index, ii in copy2: #print ii if % ii == 0: sieve[index]= none print sieve i following error:
traceback (most recent call last): file "3.py", line 22, in <module> if % ii == 0: typeerror: unsupported operand type(s) %: 'int' , 'str'
you're not making copies. you're using references, copy1, copy2, , copy3 refer same list -- sieve. if want copy, use:
copy1 = sieve[:] which create copy of sieve , assign copy1.
Comments
Post a Comment