nei*_*nor 0 python list variable-assignment
新手问题在这里.我很困惑为什么,只有在某些语法下,列表会在分配给它的其他列表得到更新时自动更新.例如,
如果我们将'a'分配给'b'并更新'b','a'仍然不受影响:
>>> b = [1,1,0]
>>> a = b
a = [1,1,0]
>>> b = [0,0,0]
a = [1,1,0]
Run Code Online (Sandbox Code Playgroud)
但是,如果我们将最后一个更新命令重写为:
>>> b[:2] = [0]*2
a = [0,0,0]
Run Code Online (Sandbox Code Playgroud)
这是为什么?
因为a和b是对象的引用.当你写:
a = b
Run Code Online (Sandbox Code Playgroud)
然后a和b被引用相同的对象,所以当你修改它作用于b,也a将发生变化.如果它们指向指针(并且在引擎盖下,它们),它们将指向同一个对象.
当你写:
b[:2] = [0, 0] # [0] * 2
Run Code Online (Sandbox Code Playgroud)
您正在修改列表,因此更改将反映出来a.
相反,当你写:
b = [0,0,0]
Run Code Online (Sandbox Code Playgroud)
b将引用一个新的,不同的列表,更改将不会反映出来a.
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |