2017-01-02 265 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)