Ran*_*ku' 3 python list operators
ls = [1,2,3]
id(ls)
output: 4448249184 # (a)
ls += [4]
id(ls)
output: 4448249184 # (b)
ls = ls + [4]
id(ls)
output: 4448208584 # (c)
Run Code Online (Sandbox Code Playgroud)
为什么(a)和(b)相同,而(b)和(c)不同?
不L += x一样L = L + x吗?
使用+=,您正在修改 plac 中的列表,就像您使用附加x到L(例如.append,.extend...)的类方法时一样。这就是__iadd__方法。
调用这些方法来实现增广算术赋值(+=、-=、*=、/=、//=、%=、**=、<<=、>>=、&=、^=、|= )。这些方法应该尝试就地执行操作(修改 self)并返回结果(可以是但不一定是 self)。
使用L = L + x,您正在创建一个新列表 ( L+x),您正在影响一个变量(在本例中为 L)。
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |