Python使用多个元素查找列表中元素的平均值

时间:2017-01-02 11:11:03

标签: python python-3.x

我有一个记录器可以抓取多个元素的当前信息,并将其添加到以下格式的列表中:trade_list.append([[trade_id,results]])。

假设我们正在跟踪trade_id的4555,5555,23232,trade_list会不断将结果添加到列表中,然后我想单独找到结果的平均值。

代码如下:

Find accounts
for a in accounts:
   find open trades of accounts
   for t in range(len(trades)):
      do some math
   trades_list.append(trade_id,result)
   avernum = 0
   average = []
   for r in range(len(trades_list)):
      average.append(trades_list[r][1]) # This is the value attached to the trade_id
       avernum+=1
   results = float(sum(average)/avernum))
   results_list.append([[trade_id,results]])

这很快就完成了。这是在两个滴答之后:

打印(results_list)
[[[53471,28.36432]],[[53477,31.67835]],[[53474,32.27664]],[[52232,1908.30604]],[[52241,350.4758]],[[53471,28.36432]],[ [53477,31.67835]],[[53474,32.27664]],[[52232,1908.30604]],[[52241,350.4758]]]

这些平均值将很快发生变化。我想使用results_list来跟踪和观察它们,然后将之前的平均值与当前的平均值进行比较

思维:

for r in range(len(results_list)):
   if results_list[r][0] == trade_id:
       restick.append(results_list[r][1])
resnum = len(restick)
if restick[resnum] > restick[resnum-1]:
   do fancy things

1 个答案:

答案 0 :(得分:0)

这里有一些简短的代码可以完成你认为你所描述的内容,尽管我可能会误解。你基本上完全按照你说的去做;选择具有某个trade_id的所有内容并返回其平均值。:

TID_INDEX = 0
DATA_INDEX = 1

def id_average(t_id, arr):
    filt_arr = [i[DATA_INDEX] for i in arr if i[TID_INDEX] == t_id]
    return sum(filt_arr)/len(filt_arr)