db_*_*db_ 4 python list pointer-aliasing
有没有办法在python中获取列表的一部分的别名?
具体来说,我希望发生相同的事情:
>>> l=[1,2,3,4,5]
>>> a=l
>>> l[0]=10
>>> a
[10, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
但我得到的是:
>>> l=[1,2,3,4,5]
>>> a=l[0:2]
>>> l[0]=10
>>> a
[1, 2]
Run Code Online (Sandbox Code Playgroud)
如果numpy是一个选项:
import numpy as np
l = np.array(l)
a = l[:2]
l[0] = 10
print(l)
print(a)
Run Code Online (Sandbox Code Playgroud)
输出:
[10 2 3 4 5]
[10 2]
Run Code Online (Sandbox Code Playgroud)
使用基本索引进行切片会返回具有numpy的视图对象,因此任何更改都会反映在视图对象中
或者使用带有array.array的memoryview:
from array import array
l = memoryview(array("l", [1, 2, 3, 4,5]))
a = l[:2]
l[0]= 10
print(l.tolist())
print(a.tolist())
Run Code Online (Sandbox Code Playgroud)
输出:
[10, 2, 3, 4, 5]
[10, 2]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1553 次 |
| 最近记录: |