我想知道是否有可能得到一个指向python列表中某个元素的“指针”。这样,我就可以直接访问我的元素,而无需知道元素的索引。我的意思是,在列表中,可以在任何地方添加元素;在开始、中间甚至结束时,单个元素都不会从实际的内存位置移动。从理论上讲,应该可以这样做:
myList = [1]
[1]
element = &myList[0]
元素将充当此处的指针。
myList.insert(0, 0)
myList.append(2)
[0,1,2]
此时,即使元素在列表中的索引已更改,我仍然可以直接访问该元素。
我想这样做的原因是,在我的程序中,要跟踪我添加到列表中的每一项都太繁琐了。每个项都由一个对象生成。偶尔,对象必须更新该值,但不能保证它会在添加时的索引中找到它的项。有一个指针可以解决这个问题。我希望这有道理。
在Python中,什么样的方法才是正确的呢?
如果不需要更改元素或者
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
。相关问题 更多 >
编程相关推荐