IM J'essaie de créer une nouvelle liste de valeurs uniques et de supprimer lesdites valeurs de la liste d'origine afin que ce qui reste soit des duplicates. Il semble que ma boucle ne saute plus de valeurs. résultats: p> Duplicats (tableau) P>
blockQuote> [1, 4, 2] p> p>
6 Réponses :
Vous retirez des valeurs de la liste que vous itération à travers, de sorte que votre boucle saute des valeurs, essayez ceci si vous devez clarifier ce que vous voulez faire avec une variable de matrice tel qu'il est Actuellement pas clair. p> p>
Vous n'avez pas besoin d'utiliser une boucle, il est beaucoup plus clair d'utiliser une compréhension de liste p>
Cependant, la réponse fournie par KUCO 23 le fait-elle de manière appropriée avec une boucle. p> DUPS = LIST (SET ([L POUR LA TRAYARE EN SI TRAY.COUNT (L)> 1])) CODE> P>
array = [1,3,4,2,2,3,4] def duplicates(array): mylist = [] for item in array: if item not in mylist: mylist.append(item) array.remove(item) else: array.remove(item) return mylist just remove the item that you don't append
Je pense que l'utilisation de sortie: p> collections.Counter code> est plus appropriée pour cette tâche:
Le problème est avec le Code correct pour afficher les valeurs sans duplicates: P> array.remove (élément) code>, il supprime l'élément à la position de l'index visité. Ainsi, le numéro d'index réduit par un et faisant la boucle pour ignorer la lecture de la valeur suivante.
[1, 3, 4, 2, 2, 3, 4] code> -> avant la 1ère indice d'itération 0 -> valeur = 1 p>
[3, 4, 2, 2, 3, 4] code> -> après la 1ère itération 1 est supprimé, de sorte index 0 -> valeur = 3 ( LOOP ne la lit pas comme il a déjà lu l'index 0, donc la boucle est la lecture indice 1 -> Valeur 4) P>
array = [1,3,4,2,2,3,4]
def duplicates(array):
mylist = []
for item in array:
if item not in mylist:
mylist.append(item)
#array.remove(item)
return mylist
res=duplicates(array)
print (res)
Un peu pas clairement ce que vous attendez. Si vous souhaitez obtenir toutes les valeurs uniques tout en conservant l'ordre d'occurrence, la manière canonique d'atteindre cela serait d'utiliser un si vous voulez Obtenez une liste des seuls em> des doublons, c'est-à-dire des valeurs qui se produisent plus d'une fois, vous pouvez utiliser un collections.ordordeddict code>:
collections.Counter code>: p>
from collections import Counter
def duplicates(array):
return [k for k, v in Counter(array).items() if v > 1]
>>> duplicates(array)
[3, 4, 2]
Avez-vous besoin des valeurs dupliquées ou des valeurs uniques? son genre de déroutant
J'aimerais retrouver une liste de valeurs uniques et la liste d'origine contient les valeurs dupliquées restantes.
Pouvez-vous modifier votre question pour inclure les résultats que vous souhaitez réaliser