获取指向列表元素的指针
我想知道是否有可能为python列表中的元素获取“指针”。这样,我将能够直接访问我的元素而无需知道我元素的索引。我的意思是,您可以在列表中的任何位置添加元素。在开始,中间甚至结束时,各个元素都不会从其实际存储位置移出。从理论上讲,应该可以执行以下操作:
myList = [1]
[1]
element = &myList[0]
元素将在此处充当指针。
myList.insert(0, 0)
myList.append(2)
[0,1,2]
此时,即使列表中的索引已更改,我仍然可以直接访问该元素。
我要这样做的原因是,在我的程序中,要跟踪我添加到列表中的每个项目太繁琐了。每个项目都是由一个对象生成的。有时,该对象必须更新值,但是不能保证它会在添加项目时在相同的索引处找到它的项目。有一个指针可以解决这个问题。我希望这是有道理的。
在Python中执行类似操作的正确方法是什么?
-
在python上没有指针的概念(至少我知道)。
如果要将对象保存在列表中,则只需保留对该对象的引用即可。
在将原始值保存到列表的情况下,我要采取的方法是在一个或多个值周围创建一个包装对象,并保留该对象的引用以供以后使用它而不必访问列表。这样,包装器就可以用作可变对象,并且无论从何处访问都可以对其进行修改。
一个例子:
class FooWrapper(object): def __init__(self, value): self.value = value # save an object into a list l = [] obj = FooWrapper(5) l.append(obj) # add another object, so the initial object is shifted l.insert(0, FooWrapper(1)) # change the value of the initial object obj.value = 3 print l[1].value # prints 3 since it's still the same reference