0


我不知道标题是否有意义......但这就是我正在尝试使用列表做的事情

>>> 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对象?

谢谢,

4

3 回答 3

1

由于赋值运算符在 Python 中的工作方式,没有办法让它工作。x = WHATEVER将始终将本地名称重新绑定xWHATEVER,而不修改x以前绑定到的内容。(*)

您可以通过将整数替换为容器数据类型(例如单元素列表)来解决此问题:

>>> x = [5]
>>> l = [x]
>>> l
[[5]]
>>> x[0] = 6
>>> l
[[6]]

但这确实是一个 hack,除了实验之外,我不会推荐它。

(*) 当引用计数降至零时,重新绑定实际上可能会修改先前绑定的对象,例如它可能会关闭文件。不过,您不应该依赖它。

于 2012-07-25T19:43:19.340 回答
0

您可以使用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
于 2012-07-25T19:41:59.663 回答
0

变量是存储数据的地方。数据结构是存储数据的地方。选择满足您需求的那一款。

于 2012-07-25T19:37:02.667 回答