Wie erhalten Sie eine Liste und eine Bitmaske? Wie gebe ich die Werte an den Indizes zurück, die True sind?

8

Ich beginne mit der folgenden Liste s und bitmask b :

%Vor%

Wie schreibe ich eine Funktion apply_bitmask(s, b) , so dass es

zurückgibt %Vor%     
Kit 24.08.2010, 10:11
quelle

4 Antworten

17

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.

    
delnan 24.08.2010, 10:31
quelle
10
%Vor%     
S.Lott 24.08.2010 10:12
quelle
8

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.

    
Stephen 24.08.2010 10:14
quelle
0

Ein weiteres Verständnis von Listen, ohne Verwendung von zip

%Vor%     
Agostino 07.12.2016 21:27
quelle

Tags und Links