listen prüfen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Gast

listen prüfen

Beitragvon Gast » Donnerstag 8. April 2004, 16:00

hallo zusammen!

ich möchte prüfen, ob einträge einer liste mehrfach vorkommen.
also z.b.

Code: Alles auswählen

l=['a','a','b','c']


a kommt zweimal vor.

wie geht ihr das an?

mfg

rolgal mit seinen spezialproblemen :D
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Donnerstag 8. April 2004, 16:47

Hi rolgal,

kommt darauf an, ob du auch wissen willst, wie oft jeder eintrag vorkommt, oder ob es reicht, zu wissen ob und welche einträge mehrfach vorkommen.

Erstmal der Test ob überhaupt doppelte vorkommen

Code: Alles auswählen

l=['a','b','c','a']
l.sort()
last = None
for x in l:
    if x == last:
        doppelte = True
        break
    else:
        last = x
else: #for !!!
    doppelte = False

print doppelte

Das erstellt eine Liste der Mehrfachvorkommenden

Code: Alles auswählen

l=['a','b','c','a']
l.sort()
result = []
last = None
for x in l:
    if x == last:
        result.append(x)
    else:
        last = x

print result

Und hier wird ein Dictionary erstellt in dem für jeden Eintrag die Häufigkeit des Vorkommens festgehalten wird.

Code: Alles auswählen

l=['a','b','c','a']
result = {}
for x in l:
    if x in result.keys():
        result[x] += 1
    else:
        result[x] = 1

print result



Gruß

Dookie
Gast

Beitragvon Gast » Freitag 9. April 2004, 04:38

hi dookie!

danke dir mal wieder!

werde das alles morgen mal ausprobieren!

mfg

rolgal
Gast

Beitragvon Gast » Freitag 9. April 2004, 11:39

hi dookie!

also mir ist da einiges nocht nicht klar. zum ziel. mit jedem listen eintrag soll was passieren, die doppelten einträge werden ignoriert.

nun zu dem was mir gar nicht klar ist.
warum machst du die zuweisung

Code: Alles auswählen

last=None

und in welchem fall ist

Code: Alles auswählen

 x==last



:?: :?:

mfg

rolgal
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Freitag 9. April 2004, 12:07

Hi rolgal,

ich gehe mal davon aus, das die Liste keinen Eintrag mit dem Wert "None" hat.
"last" hätte ich besser "last_visited" nennen sollen. "x==last" wird immer dann wahr, wenn der letzte untersuchte Eintrag, also quasi der Vorgänger, "last" gleich dem aktuellen Eintrag "x" ist, darum wird die Liste auch vorher sortiert. Beim ersten Schleifendurchlauf wird last deshalb auf None gesetzt, weil ja noch kein Element untersucht wurde.

Für Deine Problemstellung gibts auch noch eine elegantere Lösung:

Code: Alles auswählen

from sets import Set

l=['a','b','c','a']
s = Set(l)
for x in s:
    print x #oder mach sonstwas damit

Gruß

Dookie
Gast

Beitragvon Gast » Freitag 9. April 2004, 12:29

hi dookie!

danke! das mit set ist genau das was ich brauche. zumindest haben das die ersten versuche gezeigt.

muss ich mal die doku dazu lesen. ist ja ein urgeiles modul, wie es scheint.

mfg

rolgal

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]