2016-11-21 24 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 

我有兩個列表。該號碼將被動態添加到passive_boxes_list(1-16)。如何從passive_box_list減去stb_listpython中兩組(列表)的區別

例如:如果passive_boxes_list = [1 , 2 , 3]然後active_box_list應該是:

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

你是否在某種視圖中更新每次passive_boxes_list動態更新的視圖? – doctorlove

+3

你的代碼已經有效,不是嗎? (儘管你可以將'active_boxes_list'從'set'轉換爲'list')。你能更具體地描述你想要的行爲嗎?如果你想要動態更新的東西,你將不得不建立一個函數或類。 (另外,我認爲名稱操作只是「差異」,而不是「分心」,英文) –

+0

一種可能性與其他任何其他方法一樣簡潔,不涉及非pythonic對全局或其他魔法的依賴:''active_boxes_list - = set(passive_boxes_list)' –

回答

-1

你可以試試這個:

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

您應該使用List Comprehension功能。
所以你應該有類似active_boxes_list = [x for x in stb_list if x not in passive_list]
希望這個幫助!

+2

OP的'set'命令已經做這部分工作(更優雅)! –