Dla takiego przykładu (małe listy, niewiele elementów), zamień na zbiory ( set ), i znajdź przecięcie ( intersection ).
#!/usr/bin/env python3
a = [["a","d"],["a","g","d"],"b","c","e","f","g"]
b= [["g"],["a","d"],["a","g","d"],["b","c","e","f"],["b","c","e","f","g"],["a","b","c","d","e","f","g"],["a","b","c","d","e","f"],["c","f","g"],["b","e","f"],["c","e"],["b","e"],["a","c","d","f"],["a","b","d","e"],["a","b","d","e","g"],["a","c","d","f","g"]]
sa = set(tuple(t) for t in a)
sb = set(tuple(t) for t in b)
print(sa.intersection(sb))