Python 3.1 iertools.compress (oder Python 2.7's wenn Sie noch kein Upgrade durchgeführt haben, macht genau das (das Listenverständnis ist eine echte Sekunde):
%Vor% Beachten Sie, dass dies einen Iterator erzeugt, keine Liste. Speichert Speicher, aber wenn Sie es mehrmals durchlaufen oder Indizes verwenden müssen, können Sie immer list(itertools.compress(s, b))
verwenden. Noch kürzer.
Sie können Listenergänzungen verwenden:
%Vor% Dies nimmt zuerst die ursprünglichen zwei Listen und Reißverschlüsse sie zusammen, so dass Sie eine ( temporary - das ist immer noch in der Liste comp!) Liste von Paaren von Wörtern und deren Masken - so etwas wie [('baa',1), ('baa',0),...]
. Dann werden nur die Wörter mit der Maske 1 ( if mask == 1
) zu newList
hinzugefügt.