Ich habe ein Array, das mehrere Elemente mit einem gemeinsamen Präfix und ein anderes Array enthält, das eine Liste der auszuschließenden Elemente enthält, aber ohne das Präfix. Ich möchte das Präfix von allen Elementen entfernen und diejenigen ausschließen, die ausgeschlossen werden müssen. Zum Beispiel:Ändern und Ausschließen einiger Elemente in einem Array
fullList = ['foo-1', 'foo-2', 'foo-3', 'foo-4', 'foo-5']
exclude = ['2', '4', '6']
Ich möchte, als Ergebnis fullList
enthalten nur ['1', '3', '5']
. Ich könnte es leicht mit einer Schleife machen, aber ich würde es lieber mit einem Verständnis machen. Zur Zeit mache ich es in zwei Schritten:
fullList = [element.replace('foo-', '') for element in fullList]
fullList = [element for element in fullList if element not in exclude]
Ich frage mich - gibt es einen besseren Weg, und vor allem kann ich es tut mit in einem einzigen Schritt?
Ich mag die Einfachheit der ersten Lösung. – bontchev
@bontchev - das ist auch eine falsche Lösung, bedenke 'fullList = ['foo-1', 'foo-3', 'foo-5', 'foo-7', 'foo-11', 'foo-13' , 'foo-17', 'foo-19'] 'und' exclude = ['1', '7'] '. Sie würden erwarten, dass Ihr Ergebnis '[' 3 ',' 5 ',' 11 ',' 17 ',' 19 '] 'ist, aber das erste Beispiel gibt Ihnen nur' ['3', '5']' da es eine vollständige String-Suche jedes "exclude" -Elements über jedes 'fullList'-Element durchführt, so dass" 1 "mit jedem Element übereinstimmt, das" 1 "enthält. – zwer
In der Tat sollte "ex nicht in f" durch das strengere "nicht mit (ex)" ersetzt werden. – bontchev