Не знаю, опоздал ли я на ваш вопрос. После прочтения вашего вопроса я придумал функцию intersect (), которая может работать как со списком, так и с вложенным списком. Я использовал рекурсию, чтобы определить эту функцию, она очень интуитивно понятна. Надеюсь, это то, что вы ищете:
def intersect(a, b):
result=[]
for i in b:
if isinstance(i,list):
result.append(intersect(a,i))
else:
if i in a:
result.append(i)
return result
Пример:
>>> c1 = [1, 6, 7, 10, 13, 28, 32, 41, 58, 63]
>>> c2 = [[13, 17, 18, 21, 32], [7, 11, 13, 14, 28], [1, 5, 6, 8, 15, 16]]
>>> print intersect(c1,c2)
[[13, 32], [7, 13, 28], [1, 6]]
>>> b1 = [1,2,3,4,5,9,11,15]
>>> b2 = [4,5,6,7,8]
>>> print intersect(b1,b2)
[4, 5]