Seite 1 von 1

Listen vergleichen und gemeinsame Werte ausgeben

Verfasst: Donnerstag 5. April 2018, 17:37
von Habe1Frage
Wie kann man 2 oder auch mehrere Listen vergleichen und die gemeinsamen Werte oder Strings ausgeben?

z.B.

wochentag = ["montag", "dienstag", mittwoch", "donnerstag", "freitag"]
lieblingstag = ["dienstag", "freitag", "samstag", "sonntag"]

...

Wie würde es weitergehen, dass das Programm (in dem Fall Dienstag und Freitag) die gleichen Werte ausgibt?

Vielen Dank schonmal!

Re: Listen vergleichen und gemeinsame Werte ausgeben

Verfasst: Donnerstag 5. April 2018, 18:01
von Joshuah992
Hi ^.^

also ich würds so machen:

Code: Alles auswählen


wochentag = ["montag", "dienstag", "mittwoch", "donnerstag", "freitag"]
lieblingstag = ["dienstag", "freitag", "samstag", "sonntag"]

gemeinsame_tage = []

for i in lieblingstag:
    if i in wochentag:
        gemeinsame_tage.append(i)


Re: Listen vergleichen und gemeinsame Werte ausgeben

Verfasst: Donnerstag 5. April 2018, 18:15
von Sirius3
@Joshuah992: hört sich für mich ein bißchen nach Hausaufgabe an. `i` ist ein schlechter Name, da man da gleich an eine Zahl denkt, `tag` wäre passender.

Re: Listen vergleichen und gemeinsame Werte ausgeben

Verfasst: Donnerstag 5. April 2018, 19:22
von Joshuah992
@Sirius3 Stimmt, "tag" ist besser. Aber laut einem seltsamen Uniprofessor soll man eh englische Namen für Variablen benutzen, von daher dachte ich 'zu Vorführungszwecken reichts' :P

Re: Listen vergleichen und gemeinsame Werte ausgeben

Verfasst: Donnerstag 5. April 2018, 20:57
von snafu
Und ich würds so machen:

Code: Alles auswählen

wochentag = ["montag", "dienstag", "mittwoch", "donnerstag", "freitag"]
lieblingstag = ["dienstag", "freitag", "samstag", "sonntag"]
print(*set(wochentag).intersection(lieblingstag), sep=', ')

Re: Listen vergleichen und gemeinsame Werte ausgeben

Verfasst: Samstag 7. April 2018, 18:51
von Habe1Frage
also danke erstmal für die ganze hilfe von euch. Und nein, es war keine hausaufgabe. Schreibe ein größeres Programm und habe meine Frage sehr vereinfacht dargestellt. Trotzdem nochmals danke

Re: Listen vergleichen und gemeinsame Werte ausgeben

Verfasst: Sonntag 8. April 2018, 08:59
von DeaD_EyE
Die Lösung von Joshuah992 ist eine, die der Lehrer erwarten könnte.
Hier wird halt gezeigt wie man es "zu Fuß" machen kann. Ist aber nicht pythonic.

Genau für diesen Zweck gibt es die Funktion zip().
Zip könnte man am besten als Reißverschluss bezeichnen.
Es fügt zwei oder mehrere Listen zusammen. Man kann auch ein Transpose (Zeilen mit Spalten tauschen) machen, wie man es Excel kennt.

Code: Alles auswählen

liste1 = [1,2,3]
liste2 = [4, 5]

for l1, l2 in zip(liste1, liste2):
    print(l1, l2)
Was mit unterschiedlich langen Listen passiert, siehst du, wenn du das Beispiel ausprobierst.
Wenn du etwas haben möchtest, dass mit unterschiedlich langen Listen arbeitet, musst du nach itertools.zip_longest gucken.

Re: Listen vergleichen und gemeinsame Werte ausgeben

Verfasst: Sonntag 8. April 2018, 11:17
von __deets__
@Dead_Eye was hat denn zip hiermit zu tun? Die Verpaarung hilft doch nicht für einen Test auf enthalten sein.

Re: Listen vergleichen und gemeinsame Werte ausgeben

Verfasst: Sonntag 8. April 2018, 13:14
von DeaD_EyE
Ach mist, stimmt.
Habe nur die beiden Listen kurz gesehen und zu schnell geantwortet.
Ne, dann geht es mit zip natürlich nicht.