函数返回字符串 - 如何将它们作为单独的项添加到列表中?

时间:2017-10-20 17:31:35

标签: python-3.x list function

我正在努力将函数的输出转换为我喜欢的格式(列表对于我来说是最简单的(我认为))。任何帮助将不胜感激。

我有什么

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()

返回[&#39; ETH_LTC&#39;],即仅返回第一项。

有没有办法让它将所有项目作为列表返回?即,[&#39; ETC_LTC&#39;,&#39; DASH_XMR&#39;等]

我已经找到了一些java和类似的答案,但对于我无法弄清楚的python并不完全相同。提前谢谢。

2 个答案:

答案 0 :(得分:0)

使用列表理解:

def adf_filter():
    return [str(row.Index) for row in adfstats.itertuples() if float(row.adf) <= float(row.critvalues['10%'])]
PD:我还没有测试过它,但它应该可以运行

现在,针对您的具体问题,当它应该出去时,您在for内部有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 :(得分: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特有的,它只是一般编程。