以列表为例,在初始化列表的时候我们可以用 * 来复制元素。
arr = [0]*3 #此时arr为[0,0,0]
arr2 = [[0]]*3 #此时arr2为[[0],[0],[0]]
此时arr和arr2中每个元素的内存地址都是相同的,又因为列表为Python中的可变对象。所以对arr2中的一个元素进行list操作时,会影响到其他元素。
因此在使用*进行列表的初始化时需要注意列表中的元素是可变对象还是不可变对象,或是通过列表生成式进行初始化。
以列表为例,在初始化列表的时候我们可以用 * 来复制元素。
arr = [0]*3 #此时arr为[0,0,0]
arr2 = [[0]]*3 #此时arr2为[[0],[0],[0]]
此时arr和arr2中每个元素的内存地址都是相同的,又因为列表为Python中的可变对象。所以对arr2中的一个元素进行list操作时,会影响到其他元素。
因此在使用*进行列表的初始化时需要注意列表中的元素是可变对象还是不可变对象,或是通过列表生成式进行初始化。