Потому что никто еще не упомянул frozenset
:
In [1]: a = [0, 0, 0, 1, 1, 2, 2, 2, 3, 3]
...: b = [1, 2, 3, 0, 9, 0, 3, 5, 0, 1]
...: c = [0.1, 0.4, 0.5, 0.7, 0.8, 0.44, 0.6, 0.9, 0.3, 0.77]
In [2]: seen = set()
...: to_del = []
...: for i, n in enumerate(a):
...: pair = frozenset((n, b[i]))
...: if pair in seen:
...: to_del.append(i)
...: else:
...: seen.add(pair)
...:
...: for i in reversed(to_del):
...: del a[i]
...: del b[i]
...: del c[i]
...:
In [3]: a
Out[3]: [0, 0, 0, 1, 2, 2, 3]
In [4]: b
Out[4]: [1, 2, 3, 9, 3, 5, 1]
In [5]: c
Out[6]: [0.1, 0.4, 0.5, 0.8, 0.6, 0.9, 0.77]
Или, если вы хотите создать новую копию a
, b
и c
и оставить исходные списки без изменений:
In [2]: aa, bb, cc = [], [], []
...: seen = set()
...: for i, n in enumerate(a):
...: pair = frozenset((n, b[i]))
...: if pair not in seen:
...: seen.add(pair)
...: aa.append(n)
...: bb.append(b[i])
...: cc.append(c[i])
...:
In [3]: aa
Out[3]: [0, 0, 0, 1, 2, 2, 3]
In [4]: bb
Out[4]: [1, 2, 3, 9, 3, 5, 1]
In [5]: cc
Out[5]: [0.1, 0.4, 0.5, 0.8, 0.6, 0.9, 0.77]