как составить список списков с разницей между списками?

У меня есть список некоторых номеров:

l1 = [1,2,3,4,5,6,7] 

и еще один:

 l2 = [3,5,6] 

Я хочу получить список интервалов с числами, которые существуют, в l2, но не в l1:

 intervals = [[1,2],[4],[7]] 

Я попытался сделать это вот так:

 current_common_line_no = 0 for line in l1: if line in l2: current_common_line_no = line else: next_common_line_no = l2[(l2.index(current_common_line_no))+1] print next_common_line_no 

получить список интервальных ребер, но что дальше?

Вы можете использовать groupby() со списком:

 from itertools import groupby [list(g) for k, g in groupby(l1, key=lambda x: x not in l2) if k] # [[1, 2], [4], [7]] 

Используйте наборы. Python создал встроенные структуры данных. То, что вы ищете, – это разница. Вот документация.

Поэтому set.difference (x, y)

https://docs.python.org/2/library/sets.html

Дайте мне знать, если вам нужно больше, чем это