Python存储动态数据

时间:2012-07-25 19:35:26

标签: 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对象可以存储变量的动态值?

谢谢,

3 个答案:

答案 0 :(得分:1)

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

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

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

但这真的是一个黑客攻击,除了实验,我不会推荐它。

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

答案 1 :(得分:0)

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

答案 2 :(得分: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