2016-11-21 1 views
0
stb_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] 
passive_boxes_list = [] 
active_boxes_list = set(stb_list) - set(passive_boxes_list) 
print active_boxes_list 

Ich habe zwei Listen. Die Nummer wird dynamisch in die passive_boxes_list eingefügt (1-16).Unterschied von zwei Sets (Listen) in Python

Wie kann ich stb_list von passive_box_list subtrahieren.

Zum Beispiel: Wenn passive_boxes_list = [1 , 2 , 3] dann active_box_list sein sollte:

active_boxes_list = [4, 5,6, 7, 8, 9, 10, 11, 12, 13,14,15,16] 
+0

Sind Sie auf der Suche nach einer Art von Ansicht, die jedes Mal aktualisiert wird, wenn passiv_boxes_list dynamisch aktualisiert wird? – doctorlove

+3

Ihr Code funktioniert schon, oder? (Obwohl Sie 'active_boxes_list' möglicherweise in eine' list' von 'set' konvertieren könnten.) Können Sie genauer angeben, welches Verhalten Sie wollen? Wenn Sie etwas wirklich dynamisch aktualisieren möchten, müssen Sie eine Funktion oder eine Klasse erstellen. (Auch ich denke, der Name Operation ist nur "Unterschied", nicht "Ablenkung", in Englisch) –

+0

Eine Möglichkeit, die etwa so knapp wie jede andere ist, die nicht ein nicht-pythonisches Maß an Vertrauen auf Globals oder andere Magie beinhaltet : 'active_boxes_list - = set (passiv_boxes_list)' –

Antwort

-1

Sie können dies versuchen:

list = [1,2,3,4,5,6,7] 
bleh=[1,2,3,10] 
for x in bleh: 
    if x in list: 
     del list[list.index(x)] 
print list 
3

Sie sollten die List Comprehension-Funktion verwenden.
Also sollten Sie etwas wie active_boxes_list = [x for x in stb_list if x not in passive_list] haben
Hope this help!

+2

Die 'set'-Befehle des OP machen es bereits dieser Teil des Jobs (eleganter)! –