Dans de nombreux processus de traitement de données, vous voyez souvent un générateur de liste car il a une syntaxe simple et de nombreuses opérations complexes peuvent être effectuées avec une seule ligne de code.
Une grammaire de base
Syntaxe de base: [expression pour x dans la liste]
a = [x for x in range(1,5)]
a
Out[112]: [1, 2, 3, 4]
Deux branches conditionnelles
Syntaxe de base: [Expression pour x dans la liste si condition]
a = [x+3 for x in range(1,5) if x>2]
a
Out[116]: [6, 7]
Trois autres
Syntaxe de base: [Expression 1 if condition else expression 2 for x in list]
#如果大于2,则加3,否则加20
a = [x+3 if x>2 else x+20 for x in range(1,5)]
a
Out[118]: [21, 22, 6, 7]
Quatre autres
Puisqu'il existe des compréhensions de liste, y a-t-il une analyse de tuple, une analyse de dictionnaire? La réponse est oui, la formule analytique du tuple est introduite ci-dessous (remplacez simplement "[]" par "()")
a = (x**2 for x in range(1,5))
a
Out[120]: <generator object <genexpr> at 0x000002098F06CCC8>
next(a)
Out[121]: 1
next(a)
Out[122]: 4
La fonction next () est utilisée ici pour la sortie
Cinq utilisations avancées
Essayez d'utiliser la compréhension de liste pour la complétion de données. Dans l'exploration de données ou d'autres tâches en amont, vous rencontrerez des problèmes tels que des données manquantes ou une transformation dimensionnelle. Comment utiliser la compréhension de liste python pour la complétion de données? Voir l'exemple ci-dessous pour compléter la deuxième ligne de s_list, et les deux lignes de commandes seront réalisées
Le premier, prenez la longueur maximale de chaque ligne de données
Deuxièmement, remplissez 0 pour terminer
s_list
Out[127]: [[1, 2, 3, 4, 5], [4, 5]]
max_len = max(len(i) for i in s_list)
a_list = [s+[0]*(max_len-len(s)) if max_len >len(s) else s[:max_len] for s in s_list]
a_list
Out[129]: [[1, 2, 3, 4, 5], [4, 5, 0, 0, 0]]