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

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

Linda Hamilton
Libérer: 2024-12-07 11:21:11
original
906 Les gens l'ont consulté

How to Identify Consecutive Number Groups in a Python List?

Identification de groupes de nombres consécutifs dans une liste

En Python, l'identification de groupes de nombres consécutifs dans une liste peut être réalisée par diverses méthodes. Voici une discussion des options disponibles :

1. Utilisation de la recette GroupBy de Python Docs :

Python fournit une recette élégante pour cette tâche. GroupBy parcourt les éléments de la liste énumérée, regroupant les nombres consécutifs :

from operator import itemgetter
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

Cela affichera des groupes de nombres consécutifs :

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

2. Modification de la sortie GroupBy :

Pour obtenir le format de tuple demandé, vous pouvez modifier la sortie comme suit :

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

Cela affichera :

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

3. Implémentation personnalisée :

Vous pouvez également implémenter votre propre solution personnalisée :

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

Gestion des numéros individuels :

Pour renvoyer des numéros individuels en tant qu'éléments individuels, modifiez simplement le code d'implémentation personnalisé comme suit :

...
    if len(group) > 1:
        ranges.append(xrange(group[0], group[-1]+1))
    else:
        ranges.append(group[0])
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!

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