2017-02-04 1 views
0

Ich versuche, eine Funktion zu schreiben, die eine Zeichenfolge und überprüft, ob mehrere Übereinstimmungen aus einer separaten Liste darin sind.Python 3: Überprüfen Sie eine Zeichenfolge für mehrere Übereinstimmungen aus einer anderen Liste

Sagen wir, die Liste ist:

fruits = ['Apple', 'Orange', 'Pineapple', 'Durian', 'Lychee'] 

Und die Eingabezeichenfolge ist:

"Apple, Orange" 

Ich mag es wäre eine wahre, wenn zwei oder mehr Elemente aus der Liste zurückzukehren sind in der Eingabezeichenfolge.

So:

"Durian, Apple, Orange" 

würde wahre zurückzukehren. Aber:

"Apple" 

zurückkehren würde Falsch.

Ich bin nur nicht ganz sicher, wie man über die Eingabezeichenfolge iterieren. Würde mich über jede Hilfe freuen!

+1

können Sie rufen '.split()' auf der Eingabezeichenfolge, die Ihnen eine Liste gibt, dann die Schritte [hier] (http://stackoverflow.com/questions/6159313/can-python- Testen Sie die Mitgliedschaft von mehreren Werten in einer Liste. – tyteen4a03

+0

'sum (1 für x in input_str.split (',') wenn x in früchte)> = 2' –

+0

' len ([a für a in your_str.split (',') wenn a in früchten])> 1 ' – MYGz

Antwort

1

Wenn Sie auch die Wiederholung zählen möchten (d. H. Eingabezeichenfolge 'apple, apple' würde auch True zurückgeben), dann sollte die folgende Zeile die Aufgabe erledigen.

sum(f in fruits for f in fruit_str.split(', ')) > 1 

Wenn Sie möchten, als auch für die Eindeutigkeit überprüfen, können Sie den Eingabestring vorverarbeiten und die Duplikate entfernen, bevor in der Frucht-Liste für ihre Anwesenheit zu überprüfen.

sum(f in fruits for f in set(fruit_str.split(', '))) > 1 
+0

Sie können auch den Kreuzungsoperator '&' verwenden, der effizienter als eine Schleife sein sollte. 'len (set (fruit_str.split (',')) & set (fruits))> = 2' –

+0

@ HåkenLid: Das ist ein anderer Weg, aber ich habe Zweifel, dass & intersection schneller als eine Schleife ist. Braucht das nicht sowieso eine Schleife? – Fallen

+0

In der zugrunde liegenden C-Implementierung gibt es vermutlich eine Schleife. Die Suche ist jedoch eine konstante Zeit, da set als Hash-Map implementiert ist. –

Verwandte Themen