Pho*_*nix 1 python for-loop extend python-3.x
参见示例,为什么=和.extend之间存在这种差异:
d1=[1,2,3]
d2=[7,8,9]
d={1:d1,2:d2}
for key,value in d.items():
value=['a','b','c']
Run Code Online (Sandbox Code Playgroud)
输出:{1: [1, 2, 3], 2: [7, 8, 9]}
for key,value in d.items():
value.extend(['a','b','c'])
Run Code Online (Sandbox Code Playgroud)
输出:{1: [1, 2, 3, 'a', 'b', 'c'], 2: [7, 8, 9, 'a', 'b', 'c']}
.extend似乎具有写入功能=不.我想深入研究为什么这是令人高兴的.
您的第一个示例重新绑定 value到新的列表对象.因为value不再与字典值相关联,所以字典值完全不受影响.
第二个示例显式调用列表对象上的一个方法,该方法就地修改了对象.
Python名称仅仅是对实际对象的引用,如字典,列表,属性等.如果您将名称指向别的东西(将它们绑定到另一个对象),那么绑定的前一个对象发生的所有事情都是引用计数减1.这可能导致对象从内存中清除,但不会更改对象的值.
但是在对象上调用一个方法(例如value.extend()),那么该方法可能会影响对象.由于list对象是可变的,因此您会看到更改反映在引用该对象的任何位置.
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |