我不知道标题是否有意义......但这就是我正在尝试使用列表做的事情
>>> x = 5
>>> l = [x]
>>> l
[5]
>>> x = 6
>>> l
[5] # I want l to automatically get updated and wish to see [6]
>>>
dict,tuple也是如此。有没有可以存储变量动态值的python对象?
谢谢,
我不知道标题是否有意义......但这就是我正在尝试使用列表做的事情
>>> x = 5
>>> l = [x]
>>> l
[5]
>>> x = 6
>>> l
[5] # I want l to automatically get updated and wish to see [6]
>>>
dict,tuple也是如此。有没有可以存储变量动态值的python对象?
谢谢,
由于赋值运算符在 Python 中的工作方式,没有办法让它工作。x = WHATEVER
将始终将本地名称重新绑定x
到WHATEVER
,而不修改x
以前绑定到的内容。(*)
您可以通过将整数替换为容器数据类型(例如单元素列表)来解决此问题:
>>> x = [5]
>>> l = [x]
>>> l
[[5]]
>>> x[0] = 6
>>> l
[[6]]
但这确实是一个 hack,除了实验之外,我不会推荐它。
(*) 当引用计数降至零时,重新绑定实际上可能会修改先前绑定的对象,例如它可能会关闭文件。不过,您不应该依赖它。
您可以使用numpy
模块来完成。
>>> from numpy import array
>>> a = array(5)
>>> a
array(5)
>>> l = [a]
>>> l
[array(5)]
>>> a.itemset(6)
>>> a
array(6)
>>> l
[array(6)]
通常可以将 0-D numpy 数组视为任何常规值,如下所示:
>>> a + 3
9
但是,如果需要,您可以这样访问底层对象:
>>> a.item()
6
这是一种动态访问的 hacky 方法,在其给定的形式中不是非常可扩展/灵活,但可以用作更好的基础。
>>> a = 7
>>> class l:
def a_get(self):
global a
return a
def a_set(self, value):
global a
a = value
a = property(a_get, a_set)
>>> c = l()
>>> c.a
7
>>> a = 4
>>> c.a
4
>>> c.a = 6
>>> a
6
变量是存储数据的地方。数据结构是存储数据的地方。选择满足您需求的那一款。