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])]
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])
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]
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!