Résumé de l'utilisation du générateur de liste pyhon

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]]

 

Je suppose que tu aimes

Origine blog.csdn.net/qq_39463175/article/details/108074257
conseillé
Classement