Для более общего решения вы можете сериализовать каждый элемент списка с помощью pickle.dumps
перед передачей их на set()
, а затем десериализовать элементы с помощью pickle.loads
:
import pickle
m = list(map(pickle.loads, set(map(pickle.dumps, m))))
Если вы хотитеисходный порядок, который нужно сохранить, вы можете использовать dict (который стал упорядоченным с Python 3.6+) вместо набора:
import pickle
m = list(map(pickle.loads, {k: 1 for k in map(pickle.dumps, m)}))
или если вам нужно быть совместимым с Python 3.5 или более ранними версиями,Вы можете использовать collections.OrderedDict
вместо:
import pickle
from collections import OrderedDict
m = list(map(pickle.loads, OrderedDict((k, 1) for k in map(pickle.dumps, m))))