当我将这两个值分配给另一个时,为什么这两个值不同?

时间:2011-06-01 13:53:03

标签: python

下面的代码在我打印时为c和d提供了不同的值

import csv

datafile = open('test1.csv', 'r')
datareader = csv.reader(datafile)
c = []
for row in datareader:
    c.append(row)

d = [[0]*2]*2
i=0

while i < 2:

    j=0

    while j < 2:

        d[i][j] = float(c[i][j])

        j=j+1
    i=i+1

print(c)
print(d)

2 个答案:

答案 0 :(得分:7)

这一行:

d = [[0]*2]*2

不会创建内部列表的副本,它只会创建对同一列表的多个引用。用明确的声明替换它:

d = [[0, 0], [0, 0]]

答案 1 :(得分:1)

列表是可变元素。当您执行[[0]]*10之类的操作时,您不会创建多个列表,但会创建对同一对象的10个引用。