得到一个指向列表元素的指针

2024-03-28 10:24:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否有可能得到一个指向python列表中某个元素的“指针”。这样,我就可以直接访问我的元素,而无需知道元素的索引。我的意思是,在列表中,可以在任何地方添加元素;在开始、中间甚至结束时,单个元素都不会从实际的内存位置移动。从理论上讲,应该可以这样做:

myList = [1]

[1]

element = &myList[0]

元素将充当此处的指针。

myList.insert(0, 0)
myList.append(2)

[0,1,2]

此时,即使元素在列表中的索引已更改,我仍然可以直接访问该元素。

我想这样做的原因是,在我的程序中,要跟踪我添加到列表中的每一项都太繁琐了。每个项都由一个对象生成。偶尔,对象必须更新该值,但不能保证它会在添加时的索引中找到它的项。有一个指针可以解决这个问题。我希望这有道理。

在Python中,什么样的方法才是正确的呢?


Tags: 对象内存程序元素列表地方原因element
1条回答
网友
1楼 · 发布于 2024-03-28 10:24:38

如果不需要更改元素或者element是可变对象,则element = mylist[0]已经可以工作。

不可变对象,例如Python中的int对象,您不能更改。此外,您可以在Python中使用多个名称引用同一个对象,例如,sys.getrefcount(1)在我的系统上的一个新REPL中是~2000。当然,你不希望1在所有这些地方突然意味着2

如果以后要更改对象,则该对象应该是可变的,例如,如果mylist[0] == [1],则要更改该值,可以设置element[0] = 2。自定义对象,而不是 [1]列表可能更适合于特定的应用程序。

作为替代方案,您可以使用字典(或其他名称空间对象,如types.SimpleNamespace),而不是mylist列表。然后要更改项,请按其名称引用它:mydict["a"] = 2

相关问题 更多 >