So entfernen Sie einen string aus einer Liste, die startswith-Präfix in python
Habe ich diese Liste von strings und einige Präfixe. Ich möchte Sie alle entfernen Sie die Zeichenfolgen aus der Liste, die beginnen mit diesen Präfixen. Ich habe versucht:
prefixes = ('hello', 'bye')
list = ['hi', 'helloyou', 'holla', 'byeyou', 'hellooooo']
for word in list:
list.remove(word.startswith(prexixes)
So, ich möchte meine neue Liste:
list = ['hi', 'holla']
aber ich bekomme diese Fehlermeldung:
ValueError: list.remove(x): x not in list
Was mache ich falsch?
InformationsquelleAutor EerlijkeDame | 2014-04-30
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Greg ' s Lösung ist auf jeden Fall mehr Pythonic, aber in deinem original-code, haben Sie vielleicht gedacht, so etwas wie dieses. Beachten Sie, dass wir eine Kopie machen (mit
list[:]
syntax) und Durchlaufen Sie die Kopie, da sollte man nicht ändern, eine Liste während der Iteration über.InformationsquelleAutor merlin2011
Können Sie eine neue Liste erstellen, enthält alle Wörter, die nicht starten Sie mit einem der Präfixe:
Den Grund, warum dein code nicht funktioniert ist, dass die
startswith
- Methode gibt einen booleschen Wert zurück, und Sie Fragen sich zu entfernen, boolean aus der Liste (Sie können aber Ihre Liste strings enthält, nicht Boolesche Werte).Beachten Sie, dass es in der Regel nicht eine gute Idee, um den Namen einer Variablen
list
, da dies bereits die Namen der vordefiniertenlist
geben.startswith
nehmen kann, der ein Tupel als parameter. Cool!Ich wollte eigentlich nicht verwenden Sie die Liste als variable Namen, es war nur als Beispiel hier. Dieser arbeitete für mich, btw 🙂
Und ja startswith nehmen können Tupel als parameter, wie von python 2.5 🙂
InformationsquelleAutor Greg Hewgill
InformationsquelleAutor David J Merritt