Comment puis-je trouver les doublons dans une liste Python et créer une autre liste des doublons ? La liste ne contient que des entiers.
Réponses
Trop de publicités?Python 3.8 one-liner si vous n'avez pas envie d'écrire votre propre algorithme ou d'utiliser des bibliothèques :
l = [1,2,3,2,1,5,6,5,5,5]
res = [(x, count) for x, g in groupby(sorted(l)) if (count := len(list(g))) > 1]
print(res)
Imprime l'article et le compte :
[(1, 2), (2, 2), (5, 4)]
groupby
prend une fonction de regroupement afin que vous puissiez définir vos regroupements de différentes manières et retourner des Tuple
si nécessaire.
Collections.Counter est nouveau dans python 2.7 :
Python 2.5.4 (r254:67916, May 31 2010, 15:03:39)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] on linux2
a = [1,2,3,2,1,5,6,5,5,5]
import collections
print [x for x, y in collections.Counter(a).items() if y > 1]
Type "help", "copyright", "credits" or "license" for more information.
File "", line 1, in
AttributeError: 'module' object has no attribute 'Counter'
>>>
Dans une version antérieure, vous pouvez utiliser un dictateur conventionnel à la place :
a = [1,2,3,2,1,5,6,5,5,5]
d = {}
for elem in a:
if elem in d:
d[elem] += 1
else:
d[elem] = 1
print [x for x, y in d.items() if y > 1]
Je le ferais avec les pandas, parce que j'utilise beaucoup les pandas.
import pandas as pd
a = [1,2,3,3,3,4,5,6,6,7]
vc = pd.Series(a).value_counts()
vc[vc > 1].index.tolist()
Donne
[3,6]
Ce n'est probablement pas très efficace, mais c'est certainement moins de code que beaucoup d'autres réponses, alors j'ai pensé que je pourrais contribuer
1 votes
Duplicata possible de Comment supprimer les doublons d'une liste en Python tout en préservant l'ordre ?
1 votes
Voulez-vous les duplicata une fois, ou à chaque fois qu'ils sont vus à nouveau ?
0 votes
Je pense que cette question a été traitée avec beaucoup plus d'efficacité ici. stackoverflow.com/a/642919/1748045 L'intersection est une méthode intégrée au jeu et devrait faire exactement ce qui est requis.