我希望将数字 n 的除数作为存储在第 n 个位置的主列表中的列表。例如长度为 11 的筛子,我想要 sieve[6] == [2,3,6](忽略 1)。我下面的代码不起作用,并以一种令人不快的方式让我感到惊讶:
sieve = [[]]*11
sieve[1] = [1]
for i in range(2,11):
for j in range(i,11,i):
sieve[j].append(i)
print ("appended", i ," at sieve",j)
# This check-print statement shows that it works fine until sieve is printed.
print (sieve)
sieve[6] turns out to be : [2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10]
请问可以解释一下吗?