列表与引用

1.引用

python列表在赋值时不是将值赋给变量 ,而是将引用传递给变量。所以会出现一下“奇怪”的现象。

>>> s=[0,1,2,3]
>>> s1=s
>>> print s1
[0, 1, 2, 3]
>>> s[1]=0
>>> print s1
[0, 0, 2, 3]

变量s和s1指向的是相同的列表,s1=s并没有生成新的列表,而是将类似列表s的ID传给了变量S1,所以对任意一个列表修改都会影响s和s1。

2.Tips

将列表作为函数参数时,尽量不要直接传入列表,而是通过以下两种方法生成新的列表,避免函数的副作用。
1. 切片

>>> s3=s[:]
>>> print s3
[0, 1, 2, 3]
>>> s[1]=8
>>> print s3
[0, 1, 2, 3]

2.copy
通过copy模块的copy函数实现

>>> import copy
>>> s2=copy.copy(s)
>>> s[1]=1
>>> print s1,s2
[0, 1, 2, 3] [0, 0, 2, 3]

记录以备不时之需

你可能感兴趣的:(Python学习)