Maison > développement back-end > Tutoriel Python > Comment obtenir efficacement le premier élément correspondant à partir d'un itérable en Python ?

Comment obtenir efficacement le premier élément correspondant à partir d'un itérable en Python ?

Mary-Kate Olsen
Libérer: 2024-12-10 19:16:10
original
628 Les gens l'ont consulté

How to Efficiently Get the First Matching Item from an Iterable in Python?

Comment obtenir le premier élément correspondant à partir d'un itérable

Dans de nombreux scénarios, les développeurs rencontrent le besoin de récupérer le premier élément d'un itérable qui remplit une condition précise. Bien qu'il soit possible de parcourir l'intégralité de l'itérable, cette approche peut s'avérer inefficace pour les grands ensembles de données.

La prochaine fonction dans Python 2.6 et Python 3

Python 2.6 et versions ultérieures Les versions introduisent la fonction suivante, qui fournit une solution élégante pour cette tâche. En parcourant une expression génératrice à l'aide de la fonction suivante, vous pouvez spécifier la condition :

1

next(x for x in the_iterable if condition(x))

Copier après la connexion

Si vous souhaitez déclencher StopIteration lorsqu'aucun élément correspondant n'est trouvé, utilisez la syntaxe suivante :

1

next(x for x in the_iterable if x > 3)

Copier après la connexion

Pour renvoyer une valeur par défaut à la place, utilisez :

1

next((x for x in the_iterable if x > 3), default_value)

Copier après la connexion

Itérateurs en Python 2.5 et Antérieures

Dans Python 2.5 et les versions antérieures, vous pouvez utiliser la méthode .next() des itérateurs. Cependant, cette méthode déclenchera StopIteration si aucun élément ne satisfait à la condition. Si vous êtes certain qu'au moins un élément correspondant existe, vous pouvez utiliser .next() :

1

the_iterable.next()

Copier après la connexion

Approches alternatives pour Python 2.5 et versions antérieures

Alternativement, vous pouvez implémenter une fonction comme celle que vous avez initialement suggérée :

1

2

3

4

def first(the_iterable, condition=lambda x: True):

    for i in the_iterable:

        if condition(i):

            return i

Copier après la connexion

Vous pouvez également utiliser le module itertools, un for... : casser la boucle, ou une genexp pour arriver au même résultat.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal