Maison > développement back-end > Tutoriel Python > Comment puis-je identifier efficacement des groupes de numéros consécutifs dans une liste Python ?

Comment puis-je identifier efficacement des groupes de numéros consécutifs dans une liste Python ?

Patricia Arquette
Libérer: 2024-12-07 22:21:13
original
367 Les gens l'ont consulté

How Can I Efficiently Identify Consecutive Number Groups in a Python List?

Identifier des groupes de nombres consécutifs dans une liste

Lorsque nous sommes confrontés à la tâche d'identifier des groupes de nombres consécutifs dans une liste, il existe plusieurs approches à considérer.

Fonctionnalité Python intégrée

Python fournit un outil puissant pour cette tâche : la fonction groupby(). En utilisant cette fonction, nous pouvons catégoriser les éléments en fonction de la différence entre leur indice et leur valeur. Par exemple, dans la liste [2, 3, 4, 5, 12, 13, 14, 15, 16, 17], la fonction groupby() afficherait les groupes suivants :

[(2, [2, 3, 4, 5]), (12, [12, 13, 14, 15, 16, 17])]
Copier après la connexion

Ici, chaque groupe est constitué d'éléments dont l'indice diffère de leur valeur du même montant, indiquant des nombres consécutifs.

Personnalisé Fonction

Une approche alternative consiste à créer une fonction personnalisée. Une implémentation est donnée ci-dessous :

ranges = []
for key, group in groupby(enumerate(data), lambda (index, item): index - item):
    group = map(itemgetter(1), group)
    if len(group) > 1:
        ranges.append(xrange(group[0], group[-1]))
    else:
        ranges.append(group[0])
Copier après la connexion

Cette fonction génère une liste de tuples, où chaque tuple représente un groupe de nombres consécutifs. Pour l'entrée [2, 3, 4, 5, 12, 13, 14, 15, 16, 17], le résultat serait :

[(2, 5), (12, 17), 20]
Copier après la connexion

Notez que les nombres individuels sont renvoyés en tant qu'éléments individuels plutôt que gammes.

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