Maison > développement back-end > Tutoriel Python > Faire le point sur les idées pour interrompre plusieurs boucles en Python

Faire le point sur les idées pour interrompre plusieurs boucles en Python

爱喝马黛茶的安东尼
Libérer: 2019-09-26 17:37:09
avant
2230 Les gens l'ont consulté

Faire le point sur les idées pour interrompre plusieurs boucles en Python

I. Sortir d'une seule boucle

Quel que soit le langage de programmation, il peut être nécessaire de sortir du boucle, comme lors d'une énumération. Elle se termine lorsqu'un nombre qui satisfait à la condition est trouvé. Sortir d'une seule boucle est très simple, comme :

for i in range(10):
    if i > 5:
        print i
        break
Copier après la connexion

Cependant, nous devons parfois sauter de plusieurs boucles, et break ne peut sortir que d'une seule boucle, comme :

for i in range(10):
    for j in range(10):
        if i+j > 5:
            print i,j
            break
Copier après la connexion

Ce code n'est pas On dit qu'il s'arrête lorsqu'un groupe de i+j > 5 est trouvé, mais 10 groupes sont trouvés en continu, car break ne sort que de la boucle for j in range (10). Alors, comment pouvons-nous sortir de la catégorie multi-pondérée ? Prenez note ici.

Recommandations associées : "Tutoriel Python"

II Sortir de plusieurs boucles

En fait, la syntaxe standard. de Python est qu'il ne prend pas en charge le saut de plusieurs boucles, vous ne pouvez donc utiliser que certaines techniques. Les idées générales sont les suivantes : écrire en tant que fonction, utiliser un produit cartésien et utiliser le débogage.

Bien sûr, l'idée la plus courante est d'utiliser la notation variable

def f():
    flag = 0
    for i in range(10):
        for j in range(i):
            if i+j>5:
                print i,j
                flag = 1
                break
        if flag == 1:
            break
if __name__ == "__main__":
    f()
Copier après la connexion

pour écrire une fonction

En Python, la fonction s'arrêtera lorsqu'elle atteint l'instruction return. , vous pouvez donc utiliser cette fonctionnalité pour écrire des fonctions en tant que fonctions pour terminer plusieurs boucles.

Par exemple :

def work():
    for i in range(10):
        for j in range(10):
            if i+j > 5:
                return i,j
print work()
Copier après la connexion

Utiliser un produit cartésien

L'idée de cette méthode est que puisque je peux sortir d'une seule boucle, Je vais réécrire les boucles multiples Pour une seule boucle, vous pouvez utiliser la fonction produit cartésien product dans itertools, par exemple :

from itertools import product
for i,j in product(range(10), range(10)):
    if i+j > 5:
        print i,j
        break
Copier après la connexion

Utiliser le mode débogage

Le cartésien La méthode product est très intelligente et très simple, mais elle ne peut être utilisée que lorsque les collections de chaque boucle sont indépendantes. Si chaque niveau de boucle est étroitement lié au niveau précédent, cette technique ne peut pas être utilisée. À ce stade, vous pouvez utiliser la première méthode et l'écrire sous forme de fonction. De plus, vous pouvez également utiliser le mode débogage. Cela profite du principe de sortie dès qu'une erreur se produit en mode débogage et masque une erreur.

class Found(Exception):
    pass
try:
    for i in range(10):
        for j in range(i): #第二重循环跟第一重有关
            if i + j > 5:
                raise Found
except Found:
    print i, j
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:cnblogs.com
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