Notation et générateur d'inclusion de liste Python

Notation et générateur d'inclusion de liste Python

Les deux génèrent des listes, mais elles sont utilisées différemment, je vais donc les résumer légèrement.

Notation d'inclusion de liste

Une des méthodes courantes pour écrire des méthodes de type carte. Python a également une méthode de carte, mais l'inclusion de liste est plus rapide, alors utilisons-la.

Notation et carte d'inclusion de liste

Notation d'inclusion de liste

names = ['Alice', 'Bob', 'Carl', 'Dave']

[name[0] for name in names] # => ['A', 'B', 'C', 'D']

méthode de carte

names = ['Alice', 'Bob', 'Carl', 'Dave']

map(lambda name: name[0], names) # => ['A', 'B', 'C', 'D']

si notation d'inclusion de liste

Il peut être utilisé lorsque vous souhaitez créer une nouvelle liste d'éléments qui remplissent les conditions de la liste. Il est possible d'écrire plusieurs conditions en continuant si, et bien sûr, vous pouvez également écrire avec et.

names = ['Alice', 'Bob', 'Carl', 'Dave']

[name for name in names if len(name) == 4] # => ['Carl', 'Dave']

[name for name in names if not len(name) == 4] # => ['Alice', 'Bob']

[name for name in words if not len(name) == 4 if len(name) < 5] # => ['Bob']

[name for name in words if not len(name) == 4 and len(name) < 5] # => ['Bob']

Variables multiples

Vous pouvez créer une nouvelle liste à partir de plusieurs listes en même temps en utilisant zip.

namesA = ['Alice', 'Bob', 'Carl', 'Dave']
namesB = ['Peter', 'Micheal', 'John', 'Harry']

[" ".join([x, y]) for x, y in zip(namesA, namesB)]
# => ['Alice Peter', 'Bob Micheal', 'Carl John', 'Dave Harry']


Plusieurs boucles peuvent être exprimées en se chevauchant pour.

namesA = ['Alice', 'Bob', 'Carl', 'Dave']
namesB = ['Peter', 'Micheal', 'John', 'Harry']

[" ".join([x, y]) for x in namesA for y in namesB]
# => ['Alice Peter',
#     'Alice Micheal',
#     'Alice John',
#     'Bob Peter',
#     'Bob Micheal',
#     'Bob John',
#     'Carl Peter',
#     'Carl Micheal',
#     'Carl John',
#     'Dave Peter',
#     'Dave Micheal',
#     'Dave John']

Générateur

Le générateur peut générer des éléments à partir des expressions définies. Vous pouvez récupérer la valeur du générateur avec next.

g = (x ** 2 for x in range(5))

next(g) # => 0
next(g) # => 1
next(g) # => 4
next(g) # => 16
next(g) # StopIteration

En utilisant un générateur, vous pouvez arrêter de générer des valeurs lorsque les conditions sont remplies. Il existe cependant d'autres utilisations.


Bonus itertools

Il existe un module Python appelé itertools, qui a des méthodes bien implémentées pour générer des itérateurs.

Par exemple, lorsque vous souhaitez énumérer des combinaisons

import itertools
itertools.combinations('ABCD', 2) # => (A,B) (A,C) (A,D) (B,C) (B,D) (C,D)

Notez que cela ne crée qu'un itérateur, pas une liste.


C'est ici que vous pouvez apprendre une si petite notation tout en résolvant des problèmes. Udacity Design of computer programming

Blog faisant (ou essayant) du machine learning avec Python Blog Effort 1mm

Recommended Posts

Notation et générateur d'inclusion de liste Python
Itérateur et générateur Python
Fonctions d'ordre supérieur et notation d'inclusion en Python
[Python] liste
Inclusions de tapple Python et expressions de générateur
Différence entre list () et [] en Python
bases de python: liste
Notation inclusive de Python (à propos de l'expression de liste et de générateur) [supplémentaire]
Structure de données Python et implémentation interne ~ Liste ~
Différence entre append et + = dans la liste Python
liste et somme
list et numpy
Python> Compréhension / Notation inclusive> Compréhension de liste
[Python Iroha] Différence entre List et Tuple
Manipulation de liste Python
Notation d'inclusion de liste Python facile à oublier
Liste de code Python à déplacer et à mémoriser
[Python] Une compréhension approximative des itérables, des itérateurs et des générateurs
Liste triée en Python
Exercice Python 2 - Notation d'inclusion de liste
Liste des modules python
Python> liste> extend () ou + =
Astuces Python et Numpy
[Python] pip et roue
Vitesse de notation d'inclusion de liste en Python
Liste de filtres en Python
Paquets et modules Python
Intégration Vue-Cli et Python
liste assertXXX unittest python
Ruby, Python et carte
Mémo de type Liste / Dictionnaire Python3
[Mémo] Tri de liste Python3
Liste des API Python pour OpenCV3
Liste des erreurs Python (japonais)
Python et Ruby se séparent
Indentation de la notation d'inclusion en Python
La chose semblable à une recherche de liste en Python
Python asyncio et ContextVar
Liste des classes d'exception Python
Initialiser la liste avec python
Note d'apprentissage Python de Mayungo: liste d'histoires et de liens
Implémentation de List et Bool en Python et SQLite3 (note personnelle)
Liste des bibliothèques Python pour les data scientists et les data ingénieurs
Comment écrire à l'aide d'une expression lambda et d'une fonction de filtre et comment écrire à l'aide de la notation d'inclusion de liste
[Python] Comment trier un dict dans une liste et une instance dans une liste
Générez des nombres de Fibonacci avec des fermetures, des itérateurs et des générateurs Python
EP 7 Utiliser les compréhensions de liste au lieu de carte et de filtre
Programmation avec Python et Tkinter
Jeu de main Python (liste à deux dimensions)
Chiffrement et déchiffrement avec Python
Passons en revue les spécifications du langage autour des itérateurs et des générateurs Python
Python: variables de classe et d'instance
3-3, chaîne Python et code de caractère
Liste Python, pour instruction, dictionnaire
Série Python 2 et série 3 (édition Anaconda)
Python et matériel - Utilisation de RS232C avec Python -
Résumé des opérations de liste Python3
Python sur Ruby et Ruby en colère sur Python
division des nombres réels python (/) et division des nombres entiers (//)