2017-10-20 20 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特定的,它只是一般的编程。

相关问题