Como hacer un conjunto de listas.

Tengo una lista de listas como esta:

i = [[1, 2, 3], [2, 4, 5], [1, 2, 3], [2, 4, 5]] 

Me gustaría obtener una lista que contenga listas “únicas” (basadas en sus elementos) como:

 o = [[1, 2, 3], [2, 4, 5]] 

No puedo usar set() ya que hay elementos no hashable en la lista. En cambio, estoy haciendo esto:

 o = [] for e in i: if e not in o: o.append(e) 

¿Hay alguna forma más fácil de hacer esto?

Puede crear un conjunto de tuplas, un conjunto de listas no será posible debido a los elementos no hashables como mencionó.

 >>> l = [[1, 2, 3], [2, 4, 5], [1, 2, 3], [2, 4, 5]] >>> set(tuple(i) for i in l) {(1, 2, 3), (2, 4, 5)} 
 i = [[1, 2, 3], [2, 4, 5], [1, 2, 3], [2, 4, 5]] print([ele for ind, ele in enumerate(i) if ele not in i[:ind]]) [[1, 2, 3], [2, 4, 5]] 

Si considera que [2, 4, 5] es igual a [2, 5, 4] entonces tendrá que hacer más comprobaciones.

Puedes convertir cada elemento en una tupla y luego insertarlo en un conjunto.

Aquí hay un código con tu ejemplo:

 tmp = set() a = [[1, 2, 3], [2, 4, 5], [1, 2, 3], [2, 4, 5]] for i in a: tmp.add(tuple(i)) 

tmp será así:

 {(1, 2, 3), (2, 4, 5)}