2016-11-21 2 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).Разница двух наборов (списков) в python

Как я могу вычесть stb_list от passive_box_list.

Например: если 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' в' list' из 'set'.) Можете ли вы уточнить, какое поведение вы хотите? Если вы хотите что-то, что действительно обновляется динамически, вам нужно будет создать функцию или класс. (Кроме того, я думаю, что операция имени - это просто «разница», а не «отвлечение» на английском языке) –

+0

Одна из возможностей, которая примерно такая же краткая, как и любая другая, не связанная с непитоновым количеством зависимости от глобалов или другой магии : '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

Команды 'set' OP уже выполняют эта часть работы (более элегантно)! –

Смежные вопросы