如何使我迭代到列表中的值停止复制整个列表加一个值一遍又一遍?

时间:2016-06-08 18:42:21

标签: list python-2.7 plot iteration anaconda

标题可能有点令人困惑,或者如果我不应该在这里发帖抱歉,但是我在数字值方面遇到问题我正在连续列出一个主要目标,我希望实时绘制值。

我的问题是,一旦代码执行计算,它会将值放入列表中并打印整个列表和新值。一个例子是[1],[1,2],[1,2,3]

如何防止这种情况发生,以便我可以使用这些值实时绘制图表?我相信这会导致我收到错误[KeyError:' text']

这是我的代码:

from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream
import json

import numpy

# Variables that contains the user credentials to access Twitter API
access_token = ""
access_token_secret = ""
consumer_key = ""
consumer_secret = ""



#creates empty list
my_list = [] 
my_average = []
my_range = []
newlist = []

# This is a basic listener that just prints received tweets to stdout.
class StdOutListener(StreamListener):

    def on_data(self, data):
        json_load = json.loads(data)
        texts = json_load['text']
        #print texts
        ***[CALCULATIONS]***
        my_list.append(r)
        #drop zero in list
        if 0 in my_list: my_list.remove(0)



        #calculate average
        average = numpy.mean(my_list)
        x = average[~numpy.isnan(average)]

        for i in x:
            if i not in newlist:
                newlist.append(i)

        print newlist       






auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
stream = Stream(auth, StdOutListener())

# Searches by the keywords
stream.filter(track=['soil','gardening'],stall_warnings=True)

提前感谢您,希望它有道理。

P.S非常感谢任何实时绘制数据的建议!

1 个答案:

答案 0 :(得分:0)

我不完全理解您的代码,但我怀疑您遇到的问题是由于使用全局列表。当您追加到my_listnewlist时,您添加的值将永远保留在那里,因为列表永远不会重新初始化。

您可能希望在on_data方法中创建其中一个或两个列出局部变量。只需将初始化代码(例如newlist = [])移动到某处的函数中即可。