如何创建和使用共享内存项的两个Python迭代,并在使用过程中维护共享内存?
How to create and use two Python iterables of shared memory items, and maintain the shared memory during usage?
我如何创建一对包含相同项目(不仅仅是副本,而是项目的共享内存)但顺序不同的可迭代对象,这样就可以更改一个可迭代对象中的项目将反映在另一个可迭代对象中?
例如:
>>> x = [0, 1, 2, 3]
>>> y = [x[1], x[2], x[3], x[0]]
>>> x[2] is y[1]
True
到目前为止很好,但是如果我对可迭代对象中的其中一项进行更改,它最终会创建一个新项(新内存)space,而不是更改同一内存中的项space.
>>> x[2] *= 5
>>> x[2] is y[1]
False
>>> x[2]
10
>>> y[1]
2
将每个项目放入一个盒子中:
>>> x = [[0], [1], [2], [3]]
>>> y = [x[1], x[2], x[3], x[0]]
>>> x[2] is y[1]
True
>>> x[2][0] *= 5
>>> x[2] is y[1]
True
>>> x[2]
[10]
>>> y[1]
[10]
这里我使用的是列表,但任何可变容器都可以。
我如何创建一对包含相同项目(不仅仅是副本,而是项目的共享内存)但顺序不同的可迭代对象,这样就可以更改一个可迭代对象中的项目将反映在另一个可迭代对象中?
例如:
>>> x = [0, 1, 2, 3]
>>> y = [x[1], x[2], x[3], x[0]]
>>> x[2] is y[1]
True
到目前为止很好,但是如果我对可迭代对象中的其中一项进行更改,它最终会创建一个新项(新内存)space,而不是更改同一内存中的项space.
>>> x[2] *= 5
>>> x[2] is y[1]
False
>>> x[2]
10
>>> y[1]
2
将每个项目放入一个盒子中:
>>> x = [[0], [1], [2], [3]]
>>> y = [x[1], x[2], x[3], x[0]]
>>> x[2] is y[1]
True
>>> x[2][0] *= 5
>>> x[2] is y[1]
True
>>> x[2]
[10]
>>> y[1]
[10]
这里我使用的是列表,但任何可变容器都可以。