Avez-vous besoin de créer une fonction qui renvoie une liste mais tu ne sais pas comment ? Pas de soucis, dans soixante secondes, vous saurez ! Aller! ?
Une fonction Python peut renvoyer n'importe quel objet tel qu'une liste. Pour renvoyer une liste, créez d'abord l'objet liste dans le corps de la fonction, affectez-le à une variable your_list
, et renvoyez-le à l'appelant de la fonction en utilisant le mot-clé opération "return your_list
“.
Par exemple, le code suivant crée une fonction create_list()
qui itère sur tous les nombres 0, 1, 2, …, 9, les ajoute à la liste your_list
, et renvoie la liste à l'appelant de la fonction :
def create_list(): ''' Function to return list ''' your_list = [] for i in range(10): your_list.append(i) return your_list numbers = create_list() print(numbers) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Notez que vous stockez la liste résultante dans la variable numbers
. La variable locale your_list
que vous avez créé dans le corps de la fonction n'est visible que dans la fonction mais pas en dehors de celle-ci. Donc, si vous essayez d'accéder au nom your_list
, Python lèvera un NameError
:
>>> print(your_list) Traceback (most recent call last): File "C:\Users\xcent\Desktop\code.py", line 9, in <module> print(your_list) NameError: name 'your_list' is not defined
Pour résoudre ce problème, affectez simplement la valeur de retour de la fonction — une liste — à une nouvelle variable et accédez au contenu de cette nouvelle variable :
>>> numbers = create_list() >>> print(numbers) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Il existe de nombreuses autres façons de renvoyer une liste en Python. Par exemple, vous pouvez utiliser à la place une déclaration de compréhension de liste qui est beaucoup plus concise que le code précédent, mais crée la même liste de nombres :
def create_list(): ''' Function to return list ''' return [i for i in range(10)] numbers = create_list() print(numbers) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
La compréhension de liste est une fonctionnalité Python très utile qui vous permet de créer dynamiquement une liste en utilisant la syntaxe [expression context]
. Vous itérez sur tous les éléments dans un contexte donné "for i in range(10)
", et appliquer une certaine expression, par exemple, l'expression d'identité i
, avant d'ajouter les valeurs résultantes à la liste nouvellement créée.
Si vous avez besoin d'en savoir plus sur la compréhension des listes, n'hésitez pas à consulter ma vidéo explicative :
Une façon intéressante de renvoyer une liste à partir d'une fonction consiste à utiliser les fonctions lambda.
Une fonction lambda est une fonction anonyme en Python. Il commence par le mot-clé lambda
, suivi d'une liste de zéro ou plusieurs arguments séparés par des virgules, suivis des deux-points et de l'expression de retour. Utilisez la notation entre crochets [ ... ]
ou le list()
constructeur pour créer et renvoyer un objet de liste.
L'extrait de code suivant utilise une combinaison de fonctionnalités.
- La fonction lambda crée dynamiquement un objet fonction et l'affecte à la variable
create_list
. Vous pouvez ensuite appeler la fonction comme avant aveccreate_list()
. - L'expression de compréhension de liste crée une liste et la renvoie en même temps dans une seule ligne de code. Elle ne peut pas être plus concise que cela.
create_list = lambda : [i for i in range(10)] numbers = create_list() print(numbers) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]