2017-01-02 266 views
-1

我有一个可以获取多个元素的当前信息的股票代码,并以格式:trade_list.append([[trade_id,results]])将其添加到列表中。Python找到列表中有多个元素的元素的平均值

假设我们正在跟踪trade_id的4555,55523232,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]]) 

这真的很快填写。这是2个蜱后:

打印(results_list)
[[[53471,28.36432]],[[53477,31.67835]],[[53474,32.27664]],[[52232,1908.30604]],[ [52241,350.4758]],[[53471,38.36432]],[[53477,31.67835]],[[53474,32.27664]],[[52232,1 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 
+0

请解释您想实现的目标。并且将代码添加到您的问题中,以便获取它。 –

+0

你尝试了什么? – msvalkon

+1

所以'trade_list'是一个列表,其中包含了列表'[trade_id,results]'的列表。也就是说,你有三个级别的列表,而不是两个? –

回答

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)