Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么其他列表也会改变?_Python_Python 2.7_Dictionary - Fatal编程技术网

Python 为什么其他列表也会改变?

Python 为什么其他列表也会改变?,python,python-2.7,dictionary,Python,Python 2.7,Dictionary,我已经解决了ProjectEuler的问题5(什么是最小的正数,它可以被1到20的所有数字整除(没有余数)?,但是我想找到一个更快的方法(目前是0.000109195709229秒) 我尝试了一种动态方法,但当我运行下面的代码(这只是第一部分)时,我不明白如果我显式地编写d[I][counter]+=1,为什么d[var][counter]会得到+1 n = 20 d = {1:[0,1] + [0]*19} #a dictionary that assigns to each number

我已经解决了ProjectEuler的问题5(什么是最小的正数,它可以被1到20的所有数字整除(没有余数)?,但是我想找到一个更快的方法(目前是0.000109195709229秒)

我尝试了一种动态方法,但当我运行下面的代码(这只是第一部分)时,我不明白如果我显式地编写d[I][counter]+=1,为什么d[var][counter]会得到+1

n = 20
d = {1:[0,1] + [0]*19}  #a dictionary that assigns to each number a list of its prime factorization
for i in xrange(2,3):   #I changed n+1 with 3 for simplicity
    var = i
    counter = 2
    notDone = True
    while notDone:
        if var % counter == 0:
            var /= counter
            print var, d[var]
            d[i] = d[var]           #i has the same prime factorization of var ...
            print var, d[var]
            d[i][counter] += 1      #... except for 1 number (counter)
            print var, d[var]        #wtf?
            notDone = False
        else:
            counter += 2 if counter != 2 else 1
这就是结果:

1 [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
1 [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
1 [0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
为什么会发生这种情况?

在生产线上

d[i] = d[var]
变量
d[i]
将保存与
d[var]
相同的列表对象,因为列表是可变的

相反,您需要一份
d[var]
,您可以通过

d[i] = d[var][:]