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

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

Susan Sarandon
Libérer: 2024-12-30 01:52:08
original
585 Les gens l'ont consulté

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

Identifier des groupes de nombres consécutifs dans une liste

L'identification de groupes de nombres consécutifs dans une liste est une tâche courante qui se produit dans divers scénarios de programmation.

Outils intégrés de Python

Heureusement, les fonctions et modules intégrés de Python fournissent des solutions élégantes pour cela problème. Une approche exploite la fonction groupby() et l'expression lambda :

from itertools import groupby

data = [2, 3, 4, 5, 12, 13, 14, 15, 16, 17]
for k, g in groupby(enumerate(data), lambda (i, x): i - x):
    print(map(itemgetter(1), g))
Copier après la connexion

Cet extrait regroupe les nombres consécutifs en fonction de la différence entre leur index et leur valeur, garantissant que les éléments de chaque groupe sont consécutifs.

Si le résultat souhaité est une liste de tuples représentant la plage de nombres consécutifs, la modification suivante peut être apportée :

ranges = []
for k, g in groupby(enumerate(data), lambda (i, x): i - x):
    group = map(itemgetter(1), g)
    ranges.append((group[0], group[-1]))
Copier après la connexion

Alternatif Approche

Alternativement, une solution personnalisée peut être implémentée à l'aide d'une boucle et d'une compréhension de liste :

ranges = []
for i in range(len(data)):
    if i == len(data) - 1 or data[i] + 1 != data[i + 1]:
        ranges.append((data[i], data[i]))
    else:
        start = i
        while i + 1 < len(data) and data[i] + 1 == data[i + 1]:
            i += 1
        ranges.append((data[start], data[i]))
Copier après la connexion

Cette approche parcourt la liste, identifiant les indices de début et de fin de chaque groupe consécutif et en les ajoutant à la liste des plages.

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