la fonction renvoie des chaînes - comment les ajouter à une liste en tant qu'éléments séparés ?


Tongues

J'ai du mal à obtenir la sortie d'une fonction au format que je souhaite (la liste serait la plus simple (je pense) pour travailler avec). Toute aide serait appréciée.

Ce que j'ai

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

adf_filter()

renvoie quelque chose comme :

ETH_LTC DASH_XMR ETC_NXT XMR_BTC ETC_XRP DASH_LSK DASH_BTC DASH_LTC DOGE_NXT

Ce que j'ai essayé :

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

qui renvoie ['ETH_LTC'], c'est-à-dire uniquement le premier élément.

Existe-t-il un moyen de faire en sorte qu'il renvoie tous les éléments sous forme de liste ? c'est-à-dire ['ETC_LTC','DASH_XMR', etc.]

J'ai trouvé des réponses pour java et similaires, mais pas tout à fait les mêmes pour python que je n'ai pas pu comprendre. Merci d'avance.

Veille

Utiliser la compréhension de liste :

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

PD : Je ne l'ai pas encore testé, mais ça devrait fonctionner

Maintenant, pour en venir à votre problème spécifique, vous avez l'instruction return à l'intérieur du for quand elle devrait sortir :

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

    return adfpass

Articles connexes