709 Stimmen

Wie finde ich die Duplikate in einer Liste und erstelle eine weitere Liste mit ihnen?

Wie finde ich die Duplikate in einer Liste mit ganzen Zahlen und erstelle eine weitere Liste mit den Duplikaten?

2 Stimmen

3 Stimmen

Wollen Sie die Duplikate einmalig oder jedes Mal, wenn sie wieder gesehen werden?

0 Stimmen

Ich denke, diese Frage wurde hier bereits sehr viel effizienter beantwortet. stackoverflow.com/a/642919/1748045 Schnittpunkt ist eine eingebaute Methode von set und sollte genau das tun, was erforderlich ist

0voto

Ruman Punkte 806

Ohne Hilfe einer Datenstruktur von Python können Sie einfach den folgenden Code von mir ausprobieren. Damit lassen sich Duplikate von verschiedenen Eingabearten wie Strings, Listen usw. finden.

# finding duplicates in unsorted an array 
def duplicates(numbers):
    store=[]
    checked=[]
    for i in range(len(numbers)):
        counter =1 
        for j in range(i+1,len(numbers)):
            if numbers[i] not in checked and numbers[j]==numbers[i] :
                counter +=1 
        if counter > 1 :
            store.append(numbers[i])
            checked.append(numbers[i])
    return store

print(duplicates([1,2,2,3,3,3,4,4,5]))  # output:  [2, 3, 4]
print(duplicates("madam"))              # output:  ['m', 'a']

0voto

John Punkte 398

Prüfen Sie einfach für alle Listenelemente, ob der erste Index eines Elements gleich dem letzten Index dieses Elements ist:

>>> lastindex = lambda arr, el: len(arr) - arr[::-1].index(el) -1
>>> is_duplicate  = lambda arr, el: arr.index(el) != lastindex(arr, el)
>>> duplicates = lambda arr: [*set(x for x in arr if is_duplicate(arr, x))]
>>> 
>>> a=[2,3,5,7,11,13, 2,17,7,7,17,18,3,19,5,2,7,48,48,2,19]
>>> duplicates(a)
[2, 3, 5, 7, 48, 17, 19]
>>>

0voto

ASHISH R Punkte 3569
def removeduplicates(a):
  seen = set()

  for i in a:
    if i not in seen:
      seen.add(i)
  return seen 

print(removeduplicates([1,1,2,2]))

1 Stimmen

Sie geben eine Menge und nicht wie gewünscht eine Liste zurück. Eine Menge enthält nur eindeutige Elemente, so dass die if-Anweisung nicht wirklich notwendig ist. Sie sollten auch erklären, worin der Vorteil Ihrer Lösung im Vergleich zu den anderen besteht.

0voto

Just Me Punkte 1
some_list = ['a', 'b', 'c', 'b', 'd', 'm', 'n', 'n']
some_dictionary = {}

for element in some_list:
    if element not in some_dictionary:
       some_dictionary[element] = 1
    else:
        some_dictionary[element] += 1

for key, value in some_dictionary.items():
    if value > 1:
       print(key, end = ' ')

# another way
duplicates = []

for x in some_list:
    if some_list.count(x) > 1 and x not in duplicates:
        duplicates.append(x)

print()
print(duplicates)

Quelle: HIER

-1voto

Matt S Punkte 37

Ich musste es so machen, weil ich mich selbst herausgefordert habe, keine anderen Methoden anzuwenden:

def dupList(oldlist):
    if type(oldlist)==type((2,2)):
        oldlist=[x for x in oldlist]
    newList=[]
    newList=newList+oldlist
    oldlist=oldlist
    forbidden=[]
    checkPoint=0
    for i in range(len(oldlist)):
        #print 'start i', i
        if i in forbidden:
            continue
        else:
            for j in range(len(oldlist)):
                #print 'start j', j
                if j in forbidden:
                    continue
                else:
                    #print 'after Else'
                    if i!=j: 
                        #print 'i,j', i,j
                        #print oldlist
                        #print newList
                        if oldlist[j]==oldlist[i]:
                            #print 'oldlist[i],oldlist[j]', oldlist[i],oldlist[j]
                            forbidden.append(j)
                            #print 'forbidden', forbidden
                            del newList[j-checkPoint]
                            #print newList
                            checkPoint=checkPoint+1
    return newList

Ihr Beispiel funktioniert also so:

>>>a = [1,2,3,3,3,4,5,6,6,7]
>>>dupList(a)
[1, 2, 3, 4, 5, 6, 7]

4 Stimmen

Das ist nicht das, was der Auftraggeber wollte. Er wollte eine Liste der Duplikate, nicht eine Liste, in der die Duplikate entfernt wurden. Um eine Liste zu erstellen, in der die Duplikate entfernt wurden, würde ich vorschlagen duplist = list(set(a)) .

0 Stimmen

Auf diese Weise (oben) wird die Reihenfolge nicht beibehalten. Wenn das die Sorge ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X