membership test работает медленно, так как занимается перебором списка. Вам надо оптимизировать поиск элемента списка. Для этого нужно применить хеширование. Одним словом, вам надо вместо списков использовать словари. Пусть даже они будут мэпить элементы каждый раз на пустое множество. Т.е. spisok={[a, b, c]:None, [c, k]:None, [3, i, l, d, k]:None, ...}. Если в каком-то месте вам понадобится именно список, а не словарь, то список вожвращается либо функцией list(my_dict), либо метод keys(): my_dict.keys(). Соответсвенно вместо оператора in вы будете использовать метод has_key()
И ещë по поводу оптимизации: код
1 try:
2 a=my_dict[b]
3 except KeyError:
4 pass
работает вдвое быстрее чем
1 if my_dict.has_key(b):
2 a=my_dict[b]
хотя делает тоже самое. Но это так, к слову.