Mettre ensemble des valeurs consécutives dans la liste

Notez la méthode de description concise pour résumer la séquence de nombres monotones croissants pour chaque valeur consécutive.

import itertools

sample = [1,2,3,5,6,7,9,10]

[list(g) for _, g in itertools.groupby(
    sample, key=lambda n, c=itertools.count(): n - next(c))]

# => [[1, 2, 3], [5, 6, 7], [9, 10]]

[ʻItertools.groupby](https://docs.python.org/3.9/library/itertools.html#itertools.groupby) passe chaque élément de l'itérable du premier argument au deuxième argument et retourne. Renvoie un itérateur qui renvoie des éléments consécutifs avec la même valeur, ainsi que les éléments passés à la deuxième fonction argument. Dans l'exemple ci-dessus, le premier argument est "sample" et le second argument "key" est une expression lambda. L'expression lambda a deux arguments, n et optionnel c, mais cest spécifié par la valeur par défaut de ʻitertools.count (), et est continue dans groupby. Lorsqu'il est appelé lors de la détermination de l'identité des éléments à utiliser, chaque élément de «sample» est passé à «n». ʻItertools.count () produit un itérateur qui renvoie un nombre qui s'incrémente de" 1 "à partir de" 0 ". La valeur par défaut de c est exécutée une seule fois lorsque l'expression lambda est définie et un itérateur qui renvoie le nombre + 1` dans l'ordre à partir de 0 est affecté. Ainsi, pour «n --next (c)», «next (c)» augmente de «1» à chaque appel, donc «n» augmente de «1» et la même valeur est obtenue à partir de cette expression lambda. Il sera retourné, mais une valeur différente sera renvoyée si «n» augmente plus que «1». L'itérateur qui retourne des éléments consécutifs avec la même valeur de retour de cette expression lambda est «g», et «list (g)» génère une liste d'éléments consécutifs dans une liste imbriquée par notation d'inclusion de liste.

Recommended Posts

Mettre ensemble des valeurs consécutives dans la liste
Méthodes disponibles dans la liste
[Python] Comment afficher les valeurs de liste dans l'ordre
Combinez des listes dans un DataFrame avec des pandas
Mettez le module dans l'application Pepper
[python] Obtenez le rang des valeurs dans la liste par ordre croissant / décroissant
Prenez la somme logique de List en Python (fonction zip)
Changer la liste dans l'instruction for
Comment gérer des valeurs consécutives dans MySQL
Obtenir la liste de codes EDINET en Python
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Copiez la liste en Python
Obtenir uniquement les éléments de sous-classe dans une liste
En version imprimée, les caractères non-ascii de la liste ont fière allure
Rechercher par la valeur de l'instance dans la liste
[Python] Comment supprimer les valeurs en double de la liste
Extraire et lister les noms des personnes et des lieux dans le texte
Complétez la bibliothèque mise en anaconda avec jedi-vim
[python] Récupère la liste des classes définies dans le module
Lire la liste de liens au format csv avec l'outil graphique
[Python] Affiche toutes les combinaisons d'éléments de la liste
Regrouper par éléments consécutifs d'une liste en Python
Liste triée en Python
Mettez matplotlib dans Centos7.
Mettez scipy dans ec2
FizzBuzz en notation d'inclusion de liste
Mettez les Jedi dans Emacs 24
Liste de filtres en Python
La chose semblable à une recherche de liste en Python
Échange de valeurs en Python
Mettez le pip dans le mélangeur
En Python, les éléments de la liste sont triés et sortis sous forme d'éléments et de multiples.
Obtenez le nombre d'éléments spécifiques dans la liste python
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Comment obtenir toutes les clés et valeurs du dictionnaire
Obtenez le nombre d'occurrences pour chaque élément de la liste
Créer une nouvelle liste en combinant des éléments en double dans la liste
Je veux rendre le type de dictionnaire dans la liste unique
Trouvez l'écart moyen / standard des valeurs de luminosité dans l'image