J'ai une fonction qui crée plusieurs listes et je souhaite les retourner sur le corps principal du code avec les mêmes noms utilisés dans la fonction.
L'exemple suivant renvoie une liste concaténée puis re-crée Les listes individuelles (avec les mêmes noms utilisés dans la fonction), en analysant la liste concaténée. P>
def my_function():
# Some code which generates multiple lists
my_list_1 = [1, 2, 3]
my_list_2 = ['a', 'b', 'c']
return [my_list_1, my_list_2]
temp = my_function()
my_list_1 = temp[0]
my_list_2 = temp[1]
print (my_list_1)
print (my_list_2)
4 Réponses :
Ceci est la manière la plus pythonique:
regarder dans * args et ** kwargs Si vous avez votre fonction retour [list1, list2] Vous pouvez refacturer votre code de sorte que p>
list1, list2 = * my_function () et ainsi de suite p>
Premièrement, vous n'avez pas à renvoyer une liste Pourquoi n'utilisez-vous pas la variable Un autre moyen est de renvoyer une dicte: retour [my_list_1, my_list_2] code> mais simplement retour mon_list_1, my_list_2 code>. Cela reviendra une forte> tuple forte> de listes, c'est un meilleur moyen de retourner plusieurs choses (plus appropriées). TEMP code> à Accès des listes, plutôt que de créer my_list_1 code>, my_list_2 code> variables? Cela étant dit, vous pouvez appeler votre fonction comme my_list_1, my_list_2 = your_function () code> si vous en avez besoin. P> retour {' my_list_1 ': my_list_1,' my_list_2 ': my_list_2} code> Ensuite, vous pouvez faire l'extrait suivant (mais il est utile lorsque les touches sont très hétérogènes et non une énumération comme my_list_n em>, L'indice serait suffisant dans ce cas). P> returned_lists = your_function()
print(returned_lists['my_list_1'])
print(returned_lists['my_list_2'])
Si votre fonction renvoie beaucoup de résultats, vous devez envisager d'utiliser un Vous pouvez ensuite accéder aux résultats par leurs noms de champ P> consulter Les docs < / a> sur Nomples nommés p> p> NamedTuple code>
Merci, l'approche "my_list_1, my_list_2 = my_list_2 = my_list ()" fonctionne bien mais nécessite toujours de "répéter" tous les noms de champs à l'extérieur de la fonction.
Pourquoi avez-vous besoin d'eux comme
my_list1 = TEMP [0]; my_list2 = Temp [1] code>? Qu'est-ce que vous allez faire avecmy_list1 code>,my_list2 code> après cela? Quelle est la grande image ici?Si une fonction renvoie une liste de 30 liste, avez-vous besoin de stocker ces 30 sublistes dans une autre liste de variables de la liste?
retour my_list1, mon _list2 code> et l'appelez commemy_list_1, my_list_2 = my_function () code>Han Solo - Les données dans les listes seront soumises à diverses autres fonctions, etc. Je voulais conserver leurs noms originaux, car ils sont très descriptifs de ce qui y est, pour m'aider à suivre leur utilisation dans le reste du code.
Les objets n'ont pas de noms. Les variables ont des noms, mais vous ne pouvez pas passer des variables autour. Les listes sont des objets; Ils n'ont jamais eu de noms, et vous ne pouvez pas avoir Python apporter automatiquement les noms avec les listes.
Pour plus d'informations, la fonction interroge plusieurs fichiers texte et extrait différents ensembles de données dans diverses listes. Lorsque la liste est créée, le «nom» de celui-ci décrit quelles sont les données.
@IAINMCLIDED Je nommerais bien mon conteneur, plutôt que de nommer chaque sous-mec.