Maison  >  Article  >  développement back-end  >  For-else : une fonctionnalité étrange mais utile en Python

For-else : une fonctionnalité étrange mais utile en Python

王林
王林avant
2023-04-13 20:43:011336parcourir

For-else : une fonctionnalité étrange mais utile en Python

Introduction

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.

Connaissances de base sur la fonction "For-Else"

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.

3 scénarios d'utilisation de la fonction For-Else

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.

1. Itérer et trouver des éléments qui ne sont pas marqués

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 ?

2. Utilisé pour sortir des boucles imbriquées

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

3. Aide à la gestion des exceptions

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.

Résumé

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer