Maison >développement back-end >Tutoriel Python >For-else : une fonctionnalité étrange mais utile en Python
Peu importe le langage de programmation que nous utilisons, nous écrivons tous des instructions « si-sinon », mais qu'en est-il du « pour-sinon » ?
Pour de nombreux langages, tels que C, C++ et Java, utiliser « else » après une boucle est complètement faux. Cependant, Python, en tant que langage élégant, possède cette fonctionnalité « étrange mais utile ». S'il est utilisé correctement, notre code deviendra plus propre.
Cet article présentera la fonction "for-else" en Python et illustrera comment l'utiliser correctement à travers des exemples simples.
Lorsque vous rencontrerez pour la première fois la fonctionnalité "for-else", elle vous semblera étrange et difficile à comprendre (page d'accueil du développeur Python pour ceux qui viennent de commencer à l'utiliser) Quand en utilisant cette fonction, il est facile de penser à tort que else est mal indenté). Mais en réalité, son utilisation est étonnamment simple. Une phrase suffira : le bloc "else" de votre code n'est exécuté que lorsqu'il n'y a pas de rupture dans la boucle.
Cela semble un peu trop simple pour être vrai ? Regardons cela avec un exemple :
leaders = ["Elon", "Tim", "Warren"] for i in leaders: if i == "Yang": print("Yang is a leader!") break else: print("Not found Yang!") # Not found Yang!
Comme indiqué ci-dessus : Comme indiqué ci-dessus, la liste des leaders ne contient pas de "Yang", il n'y a donc pas de rupture dans notre boucle for. Ainsi, le bloc "else" exécute et imprime les informations.
Que se passe-t-il si la liste des leaders contient « Yang » ?
leaders = ["Yang", "Elon", "Tim", "Warren"] for i in leaders: if i == "Yang": print("Yang is a leader!") break else: print("Not found Yang!") # Yang is a leader!
Comme indiqué ci-dessus, puisque la liste des leaders contient "Yang", la boucle for est interrompue et le contenu du bloc "else" n'est pas exécuté.
En bref, la fonctionnalité for-else en elle-même n'est pas difficile à comprendre, mais son utilisation correcte et habile ne l'est pas. Ci-dessous, nous présentons trois scénarios dans lesquels la fonctionnalité for-else est adaptée.
Nous ne devons pas nécessairement utiliser la fonction for-else dans les programmes Python. Honnêtement, nous pouvons faire la même chose sans, mais son utilisation rend notre code plus élégant.
Itérer sur une liste pour trouver des éléments spécifiques est le scénario de base pour utiliser des boucles. Habituellement, lorsque nous trouvons l'élément cible, cela n'a aucun sens de continuer à itérer et nous devons sortir de la boucle. La question est : comment savoir si l’élément est trouvé ?
La solution traditionnelle consiste à définir une variable "mark" et à la définir sur True lorsque nous trouvons un élément spécifique.
leaders = ["Yang", "Elon", "Tim", "Warren"] have_yang = False for i in leaders: if i == "Yang": have_yang = True # Do something break if have_yang == False: # no yang ...# Do others
Comme le montre l'exemple ci-dessus, la variable have_yang est un indicateur. Une fois la boucle for terminée, si sa valeur est False, nous savons que « Yang » n'est pas dans la liste et peut effectuer d'autres opérations.
Cette approche est assez bonne, mais si vous souhaitez profiter des fonctionnalités « élégantes » de Python, utiliser for-else est une autre option :
leaders = ["Yang", "Elon", "Tim", "Warren"] for i in leaders: if i == "Yang": have_yang = True # Do something break else:# no yang ...# Do others
Cette façon d'écrire a l'air plus soignée, n'est-ce pas ?
Lorsqu'il y a des boucles imbriquées dans le code, for-else peut également aider.
for i in range(5): for j in range(5): if j == 2 and i == 0: break if not (j == 2 and i == 0): continue break
Comme indiqué ci-dessus, sortir des boucles imbriquées est un peu difficile car nous devons savoir si la boucle intérieure est éclatée.
Le code ci-dessus montre une solution maladroite pour déterminer si la boucle interne a été interrompue. Cela fonctionne certainement bien, mais nous pouvons le rendre plus soigné en utilisant for-else :
# use the for-else syntax for i in range(5): for j in range(5): if j == 2 and i == 0: break else:# only execute when it's no break in the inner loop continue break
nums = [1, 3, 0, 5] for denominator in nums: try: 20/denominator except ZeroDivisionError: break else:# no found ZeroDivisionError ...# Do others
Comme indiqué ci-dessus, si ZeroDivisionError ne se produit pas dans la boucle for, nous pouvons utiliser "else" Effectuez les opérations ultérieures correspondantes dans le bloc.
La fonctionnalité for-else de Python peut sembler un peu étrange au début, mais son utilisation n'est pas difficile à comprendre et peut être utile dans certains scénarios. Après tout, nous ne devons retenir qu'une seule règle : le bloc "else" n'est exécuté que lorsqu'il n'y a pas de rupture dans la boucle.
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!