Python中实时不断变化的更新列表

Python中实时不断变化的更新列表,python,Python,我对python非常陌生,似乎在搜索了所有东西之后,我找不到解决这个问题的方法。所以我要做的是有一个空白列表,里面没有任何内容,然后有一个变量,它将每天都在变化的数据附加到这个列表中。我想知道的是,如何更新这样的更改列表。我将尝试在这段代码中解释它 l = [] sum = data[0][1] l.append(sum) 现在,这个sum变量值总是每天或每秒都在变化,就像从不断更新的JSON文件中获取数据一样。我想做的是,列表不会改变,而是每次改变都会增加不断变化的总和,因此,如果第一天的总

我对python非常陌生,似乎在搜索了所有东西之后,我找不到解决这个问题的方法。所以我要做的是有一个空白列表,里面没有任何内容,然后有一个变量,它将每天都在变化的数据附加到这个列表中。我想知道的是,如何更新这样的更改列表。我将尝试在这段代码中解释它

l = []
sum = data[0][1]
l.append(sum)

现在,这个sum变量值总是每天或每秒都在变化,就像从不断更新的JSON文件中获取数据一样。我想做的是,列表不会改变,而是每次改变都会增加不断变化的总和,因此,如果第一天的总和=1,然后第二天的总和=2,我想更新列表,使其在第一天为[1],然后在第二天为[1,2]。我真的很困惑,我应该学习python的哪一部分才能做到这一点,如果有人对我的第一个python项目有任何建议的话。谢谢。

这需要使用循环。下面是一个使用无限循环(
而True
)的示例

导入时间#等待一天
N秒以天为单位=60*60*24天以秒为单位
列表\=[]
尽管如此:
sum=getsum()#在别处定义
列表追加(总和)
睡眠时间(N秒/天)
另外,请注意我所做的一些风格上的更改

  • 列表
    ->
    列表
    避免与内置函数冲突

  • sum
    ->
    sum
    避免与内置函数冲突

如果要在程序运行时访问此列表,则可能需要添加一个记录器,以便在每次添加新的
总和时将值记录在
列表中

在代码顶部添加以下行:

导入日志
logging.basicConfig(filename='log',level=logging.INFO)
添加并更改循环以表示:

为True时:
sum=getsum()#在别处定义
列表追加(总和)
logging.info(str(list))#在这里进行日志记录
睡眠时间(N秒/天)

最后,我想指出一个更好的方法是使用crontab来调度作业。我不打算对此进行深入讨论,因为网上有很多教程,只有谷歌“crontab.”(感谢评论员Devanhsoni的提醒。)

有多种方法可以做你想做的事情

让我们首先了解代码不起作用的原因。由于Python不通过引用传递,因此在修改
sum
时,它不会影响列表。事实上,Python也不传递值。()

但是,您可以使用对象包装器。然后列表将具有对对象的未更改引用。最后,您可以修改对象

class Sum:
  def __init__(self, value):
    self.value = value

l = []
sum = Sum(data[0][1])
l.append(sum) 

sum.value = ...


之后,您可以初始化和列表并对其进行更新。

因此,您希望每天在列表中添加一些数据?您的问题是什么?顺便说一句,不要使用
list
作为变量名称。它已经在中用作bult。@Devanssoni是的,没错,尽管我可能错误地将list用作变量名,或者如果您想将值存储在列表中并每天向其附加一个新值,这实际上是不可能的,因为我们的程序在RAM中运行,您创建的所有变量都存储在RAM中,并在程序停止执行时消失。因此,要实现这一点,您必须创建一个文件并将值存储在该文件中,并每天向其追加一个新值。要每天向文件添加新值,应使用作业计划程序。谢谢。一个人必须让他的机器无限期地运行才能实现这一点。这是最不切实际的方法。这就是被问到的问题,不是吗?@Devanssoni,好吧,我在最后加了一个小纸条,写下你的评论,谢谢。是的,这就是我想说的。一个人不能让他的机器一直运行,这就是为什么我们使用crontab进行作业调度。@DwikaHaryoRadithya我不完全理解你的问题,因为我在回答中讨论的日志方法是一个txt文件(事实上,您可以将
'log'
更改为
'my file.txt'
。我经常使用的另一个替代方法是
pickle
模块,它是Python的标准配置,对于存储整个Python对象非常有用。在这种情况下,您不会有一个人类可读的文件,但您可以始终通过
list\uuuux=pickle查看存储的数据。加载('list-after-3-days.pickle')