一:
比如
a = [['',0]] * 5
对第一个list中的数字进行赋值。代码如下:
a[0][1] = 5
打印则会出现以下情况:
>>> print a
[['', 5], ['', 5], ['', 5], ['', 5], ['', 5]]
原因是:a = [['',0]] * 5 ,只是对['',0]进行了浅拷贝,也就是说[['',0]] * 5拷贝的只是引用,所以对一个赋值其他的引用也会相应的改变,于是出现上面的情况。
NND,弄了一个多小时。
二:
def tp(a):
a[0] = 1
if __name__ == '__main__':
a = [2, 3, 4]
print a
tp(a)
print a
结果为:
[2, 3, 4]
[1, 3, 4]
而换成:
def tp(a):
a =1
if __name__ == '__main__':
a = [2, 3, 4]
print a
tp(a)
print a
结果变成:
[2, 3, 4]
[2, 3, 4]
三:
>>> a = [[1, 2], [2, 3]]
>>> b = a[:]
>>> c = a
>>> id(a)
182980812952
>>> id(b)
182980796288
>>> id(c)
182980812952
从中可以看出b为赋值,而c为引用,在函数参数中要注意这种情况。