Python 2-D listar cómo hacer un conjunto

como una lista de python sigue

list1 = [[1,2],[3,4],[1,2]] 

Quiero hacer un conjunto para que pueda los elementos únicos de la lista como

 list2 = [[1,2],[3,4]]. 

¿Hay alguna función en python que pueda usar? Gracias

Que hará:

 >>> list1 = [[1,2],[3,4],[1,2]] >>> list2 = list(map(list, set(map(tuple,list1)))) >>> list2 [[1, 2], [3, 4]] 

Desafortunadamente, no hay una sola función incorporada que pueda manejar esto. Las listas son “unashashable” (ver esta publicación SO ). Así que no puedes tener un set de list en Python.

Pero las tuplas son hashable:

 l = [[1, 2], [3, 4], [1, 2]] s = {tuple(x) for x in l} print(s) # out: {(1, 2), (3, 4)} 

Por supuesto, esto no le ayudará si desea más adelante, digamos, append a estas listas dentro de su estructura de datos principal, ya que ahora son todas tuplas. Si es absolutamente necesario que tenga la funcionalidad de la lista original, puede consultar esta receta de código para que Tim Peters lo unifique .

Tenga en cuenta que esto solo elimina las sublistas duplicadas, no tiene en cuenta los elementos individuales de la sublista. Ej: [[1,2,3], [1,2], [1]] -> [[1,2,3], [1,2], [1]]

 >>> print map(list, {tuple(sublist) for sublist in list1}) [[1, 2], [3, 4]] 

Puedes probar esto:

 list1 = [[1,2],[3,4],[1,2]] list2 = [] for i in list1: if i not in list2: list2.append(i) print(list2) [[1, 2], [3, 4]] 

Las soluciones más típicas ya se han publicado, así que vamos a dar una nueva:

Python 2.x

 list1 = [[1, 2], [3, 4], [1, 2]] list2 = {str(v): v for v in list1}.values() 

Python 3.x

 list1 = [[1, 2], [3, 4], [1, 2]] list2 = list({str(v): v for v in list1}.values()) 

No hay una sola función incorporada para lograr esto. Has recibido muchas respuestas. Además de estos, también puede usar una función lambda para lograr esto:

 list(map(list, set(map(lambda i: tuple(i), list1))))