Maison > développement back-end > Tutoriel Python > Comment écrire une bonne boucle Python

Comment écrire une bonne boucle Python

silencement
Libérer: 2019-06-13 16:47:48
original
3053 Les gens l'ont consulté

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:
Copier après la connexion

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之禅》
Copier après la connexion

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)
Copier après la connexion

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]
Copier après la connexion

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)
Copier après la connexion

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)
Copier après la connexion

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)
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal