2016-11-21 22 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'命令已经做这部分工作(更优雅)! –