Wie kann man doppelte Werte in Python anzeigen lassen?
Hey! Ich würde gerne in Python folgendes machen:
Gegeben sind zwei Listen mit beliebiger Anzahl an Strings:
list_1 = ["Gute", "Frage", "Python"]
list_2 = ["Gute", "Antwort"]
Nun sollte das Programm herausfinden, welche dieser Werte in beiden Liste vorkommen und diese dann auf der Console anzeigen:
if list_1.__contains__("Gute") and list_2.__contains__("Gute"):
print("Gute")
Das Problem: Aufgrund meiner noch geringen Kentnisse, weiss ich nicht, wie ich diesen Teil verallgemeinern kann. Ich kann zwar mit .contains herausfinden, ob sich spezifische Stings in den Listen befinden und kann dann somit eine Aktion ausführen, jedoch ist dies schwachsinnig, wenn ich mehrere if-Befehle machen müsste. Zudem wird der Befehl nur ein einziges Mal ausgeführt, wenn die Voraussetzungen wahr sind.
Wie kann ich den Code so umschreiben, dass es nach zwei deckungsgleichen Stings sucht und den Namen, der jeweils doppelten Strings auf der Console anzeigt, ohne dass ich irgendwelche Plug-ins importieren muss? Am besten wäre eine while Schleife geeignet, da if nur ein einziges Mal ausgeführt wird. Ich arbeite mit Replit & PyCharm.
1 Antwort
Was du suchst nennt sich "Intersection".
Hier findest du ein paar gute Lösungen: https://stackoverflow.com/questions/3697432/how-to-find-list-intersection
Beispielsweise:
print( [x for x in list_1 if x in list_2] )
print( set(list_1) & set(list_2) )
print( set(list_1).intersection(list_2) )
Gerne!
Ja, ist anfangs immer schwer nach sowas zu suchen.
Irgendwann hat man dann mal den dreh raus und kennt die gängigsten Konzepte / Begriffe.
Ich kann dir in deinem Fall nur empfehlen, auf Englisch zu googlen, und es in möchst wenigen Worten eindeutig zusammenzufassen.
Beispielsweise "find elements that are in both lists" oder "find words that two lists have in common". Da hättest du fast die selben Lösungen gefunden.
By the way, wenn du das Ergenbis ohne Klammern ausgeben möchtest, verwende
", ".join(...)
beispielsweise so:
print( ", ".join(set(list_1) & set(list_2)) )
Das erzeugt dir einen String, in dem die einzelnen Elemente komma-seperiert stehen. Du kannst auch beispielsweise " | " anstatt ", " verwenden, ganz nach belieben.
Vielen Dank! Ich wusste leider nicht, wie man so etwas nennt, deswegen fand ich auch vorher bei meiner Suche nichts hilfreiches.