signed

QiShunwang

“诚信为本、客户至上”

python列表内循环问题

2020/8/20 12:20:49   来源:
  1. 代码1
list1 = [0 for i in range(3)]
length = 5
width = 3
data = [[list1 for i in range(length)] for j in range(width)]
data[1][0][0] = 1
print(list1)
print(data)

从打印的结果上看,我猜测,给data[1][0][0]赋值的操作,会直接改变list1,并进行循环,最终导致data全部改变。不过我不知道过程是怎样的,因为给data[0][0][0]data[2][0][0]赋值会得到同样的结果。

  1. 代码2
list1 = [0 for i in range(3)]
length = 5
width = 3
data = [[[0, 0, 0] for i in range(length)] for j in range(width)]
data[1][0][0] = 1
print(list1)
print(data)

data里的list1换成[0, 0, 0],也就是不使用变量之后,则只改变指定位置的值。