获取指向列表元素的指针

发布于 2021-01-29 17:40:21

我想知道是否有可能为python列表中的元素获取“指针”。这样,我将能够直接访问我的元素而无需知道我元素的索引。我的意思是,您可以在列表中的任何位置添加元素。在开始,中间甚至结束时,各个元素都不会从其实际存储位置移出。从理论上讲,应该可以执行以下操作:

myList = [1]

[1]

element = &myList[0]

元素将在此处充当指针。

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

[0,1,2]

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

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

在Python中执行类似操作的正确方法是什么?

关注者
0
被浏览
49
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    在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
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看