Utiliser return pour récupérer plusieurs valeurs d'une boucle : peuvent-elles être stockées dans une liste ?
Dans le développement du robot Discord, les fonctions qui ont besoin renvoyer plusieurs valeurs pose un défi, surtout lorsqu'ils exploitent des boucles. L'utilisation de l'impression pour afficher les valeurs dans une console locale peut s'avérer inadéquate pour la communication par chat. Cet article explique comment renvoyer plusieurs valeurs à partir d'une boucle, en explorant l'utilisation de listes pour stocker ces valeurs.
Répartition des problèmes
Un extrait de code destiné à l'impression les données d'un dictionnaire global nommé cal sont fournies :
def show_todo(): for key, value in cal.items(): print(value[0], key)
Cependant, les robots Discord nécessitent que les données soient renvoyées pour un traitement ultérieur. Les tentatives d'utilisation de return dans la boucle ne parviennent pas à produire le résultat souhaité.
Utilisation de Yield
Une solution consiste à utiliser une fonction génératrice avec des instructions de rendement. Cela permet à la fonction de suspendre et de reprendre l'exécution à chaque itération :
def show_todo(): for key, value in cal.items(): yield value[0], key
Les valeurs peuvent ensuite être collectées à l'aide de list(show_todo()) ou itérées à l'aide de boucles for.
Ajout à une liste
Une approche alternative consiste à ajouter des valeurs à une liste dans le loop :
def show_todo(): my_list = [] for key, value in cal.items(): my_list.append((value[0], key)) return my_list
Cette méthode stocke toutes les valeurs dans my_list, permettant son retour une fois la boucle terminée.
Compréhension de liste
Pour code concis, des compréhensions de liste peuvent être utilisées :
def show_todo(): return [(value[0], key) for key, value in cal.items()]
Cette méthode crée une liste contenant tous les paires clé-valeur dans cal.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!