私はPythonの初心者で、Nが与えられるまで素数を計算するプログラムを書いています。これが私のコードです。私が見ているのは、numbers
for ループを介した各反復の後に、呼び出されたリストが変更されていることです。ただし、このリストがforループで変更されている間、反復しているリストには古い値への参照がまだ含まれていることがわかります。以下の出力を見てください。
def getprimes(n):
numbers = [ i for i in range (2,n+1)]
primes=[]
print "numbers in the beginning",numbers
for i in numbers:
print i
primes.append(i)
print "primes",primes
print "numbers",numbers
numbers=[k for k in numbers if (k%i!=0)]
print "numbers at end",numbers
return primes
print getprimes(10)
私の出力は以下の通りです:
numbers in the beginning [2, 3, 4, 5, 6, 7, 8, 9, 10]
2
primes [2]
numbers [2, 3, 4, 5, 6, 7, 8, 9, 10]
3
primes [2, 3]
numbers [3, 5, 7, 9]
4
primes [2, 3, 4]
numbers [5, 7]
5
primes [2, 3, 4, 5]
numbers [5, 7]
6
primes [2, 3, 4, 5, 6]
numbers [7]
7
primes [2, 3, 4, 5, 6, 7]
numbers [7]
8
primes [2, 3, 4, 5, 6, 7, 8]
numbers []
9
primes [2, 3, 4, 5, 6, 7, 8, 9]
numbers []
10
primes [2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers []
numbers at end []
[2, 3, 4, 5, 6, 7, 8, 9, 10]
どんな提案やコメントも大歓迎です!. ありがとう