Maison > Article > développement back-end > Comment écrire une bonne boucle Python
Pour écrire une bonne boucle python, vous n'avez pas besoin d'une instruction for ! ! !
Prenons d'abord du recul et regardons l'intuition derrière l'écriture d'une boucle for :
1 Parcourez une séquence pour extraire des informations
2 . Générer une autre séquence à partir de la séquence actuelle
3. Écrire des boucles est une seconde nature pour moi car je suis programmeur
Heureusement, Python a d'excellents outils pour vous aider à atteindre ces objectifs ! Tout ce que vous avez à faire est de changer d’avis et de voir les choses sous un angle différent.
Qu'allez-vous gagner en n'écrivant pas de boucles partout ?
1. Moins de lignes de code
2. 🎜>3. Utilisez uniquement l'indentation pour gérer le texte du code
Voyons le squelette du code ci-dessous :
Regardez la structure du code suivant :
# 1 with ...: for ...: if ...: try: except: else:
Cet exemple utilise plusieurs niveaux de code imbriqué, très difficile à lire. J'ai remarqué dans ce code qu'il utilise l'indentation sans discernement pour mélanger la logique de gestion (avec, try-sauf) et la logique métier (pour, si). Si vous respectez la convention consistant à utiliser uniquement l'indentation pour la logique administrative, la logique métier principale doit être supprimée immédiatement.
“扁平结构比嵌套结构更好” – 《Python之禅》Pour éviter la boucle for, vous pouvez utiliser ces outils
1 Compréhension de liste/expression génératrice
Regardez un exemple simple, cet exemple principalement. compile une nouvelle séquence basée sur une séquence existante :
result = [] for item in item_list: new_item = do_something_with(item) result.append(item)
Si vous aimez MapReduce, vous pouvez utiliser map ou l'analyse de liste de Python :
result = [do_something_with(item) for item in item_list]
De même, si si vous souhaitez simplement obtenir un itérateur , vous pouvez utiliser une expression génératrice avec presque la même syntaxe. (Comment pourriez-vous ne pas tomber amoureux de la cohérence de Python ?)
result = (do_something_with(item) for item in item_list)
Fonctions
Pensez-y d'une manière plus fonctionnelle et d'ordre supérieur, si vous souhaitez mapper une séquence à une autre séquence appelle directement la fonction map. (Les compréhensions de liste peuvent également être utilisées à la place.)
doubled_list = map(lambda x: x * 2, old_list)
Si vous souhaitez réduire une séquence à un élément, utilisez réduire
from functools import reduce summation = reduce(lambda x, y: x + y, numbers)
De plus, le grand nombre de fonctions intégrées en Python peut consommer des itérateurs :
>>> a = list(range(10)) >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> all(a) False >>> any(a) True >>> max(a) 9 >>> min(a) 0 >>> list(filter(bool, a)) [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> set(a) {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} >>> dict(zip(a,a)) {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9} >>> sorted(a, reverse=True) [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] >>> str(a) '[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]' >>> sum(a) 45
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!