下面的代码在我打印时为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)
答案 0 :(得分:7)
这一行:
d = [[0]*2]*2
不会创建内部列表的副本,它只会创建对同一列表的多个引用。用明确的声明替换它:
d = [[0, 0], [0, 0]]
答案 1 :(得分:1)
列表是可变元素。当您执行[[0]]*10
之类的操作时,您不会创建多个列表,但会创建对同一对象的10个引用。