知识点1:Python列表实际上是一个地址
知识点2:对一个列表乘以几,就会让列表内部的元素复制几倍
[ 列表元素 ]*5=[ 列表元素,列表元素,列表元素,列表元素,列表元素 ]
案例分析:创建一个5*5的二维列表,每一行都是一个由[ 1,2,3,4,5 ]组成的一维列表
思路A:创建一个一维列表[1,2,3,4,5],并将其复制5倍
bug:修改s[1][1]这个元素,发现把一列都修改了
问题原因:[1,2,3,4,5]是一个列表,它本质上是一个地址,s=[ [1,2,3,4,5] ]*5,相当于把一个地址复制了5份,存储到了一个新的列表中,因此,不论是s[1],s[2]还是s[3],它们指向的都是同一个列表
思路B:
s=[ [1,2,3,4,5] for i in range (5) ]
这个思路是正确的,每次循环时,s都会append一个新的独立的列表[1,2,3,4,5],因此就不会阐述引用冲突的问题