2017-10-20 25 views
0

我很努力地從函數獲取輸出到我想要的格式(列表將是最簡單的(我認爲))。任何幫助,將不勝感激。函數返回字符串 - 如何將它們作爲單獨的項目添加到列表中?

我有什麼

def adf_filter(): 
    for row in adfstats.itertuples(): 
     if float(row.adf) <= float(row.critvalues['10%']): 
      print(str(row.Index)) 

adf_filter() 

回報是這樣的:

ETH_LTC DASH_XMR ETC_NXT XMR_BTC ETC_XRP DASH_LSK DASH_BTC DASH_LTC DOGE_NXT

我已經試過:

adfpass = [] 

def adf_filter(): 
    for row in adfstats.itertuples(): 
     if float(row.adf) <= float(row.critvalues['10%']): 
      adfpass.append(str(row.Index)) 
      return adfpass 

adf_filter() 

它返回['ETH_LTC'],即只有第一個項目。

有沒有辦法讓它把所有的項目都作爲列表返回?即['ETC_LTC','DASH_XMR'等]

我發現了一些java和類似的答案,但對python來說,我還找不到一些相同的答案。提前致謝。

回答

0

使用列表理解:

def adf_filter(): 
    return [str(row.Index) for row in adfstats.itertuples() if float(row.adf) <= float(row.critvalues['10%'])] 

PD:我還沒有測試過,但它應該工作

現在,將您的具體問題,你有裏面的return語句的時候應該外出:

def adf_filter(): 
    for row in adfstats.itertuples(): 
     if float(row.adf) <= float(row.critvalues['10%']): 
      adfpass.append(str(row.Index)) 

    return adfpass 
+1

謝謝Abend,這是一個巨大的幫助。工作的一種享受,併爲我節省了很多時間,並解決了類似的問題。 – Flipflop

0

你所需要的一切作品,只是沒有按照正確的順序:

def adf_filter(): 
    adfpass = [] 

    for row in adfstats.itertuples(): 
     if float(row.adf) <= float(row.critvalues['10%']): 
      adfpass.append(str(row.Index)) 

    return adfpass 

沒有關於這種安排是Python特定的,它只是一般的編程。

相關問題