martes, 21 de septiembre de 2010

Nota python: Eliminar elementos repetidos de una lista

Necesitaba eliminar elementos repetidos de una lista, la primera aproximación sería recorrer la lista e ir comprobando si los elementos están repetidos. Decidí buscar otras opciones y he encontrado dos formas de eliminar elementos repetidos de una lista. Ninguno de estas dos formas respeta el orden inicial de la lista.

Uso del tipo de dato set (conjunto de datos mutable, sin orden, que no contiene duplicados). Convertimos primero la lista a tipo set y luego volvemos a convertir el tipo set en lista.

>>>lst = [1, 1, 3, 2]
>>> lst
[1, 1, 3, 2]
>>> lst = list(set(lst))
>>> lst
[1, 2, 3]

En el siguiente ejemplo hacemos uso de los diccionarios para eliminar los elementos repetidos. Primero creamos un diccionrio donde las claves están almacenadas en la lista. Depués obtenemos las claves del diccionario que acabamos de crear.

>>> lst = [1, 1, 3, 2]
>>> lst
[1, 1, 3, 2]
>>> lst = dict.fromkeys(lst)
>>> lst
{1: None, 2: None, 3: None}
>>> lst = lst.keys()
>>> lst
[1, 2, 3]

jueves, 9 de septiembre de 2010

Nota: Trabajando con listas en Python. Igualar listas.

Estaba depurando un programa y me he dado cuenta de como funcionan las listas en python al igualarse.
Si se iguala una lista a otra, no se está creando una nueva lista con los valores de la anterior, si no que estás creando un nuevo nombre para la misma lista.

Voy a poner un ejemplo donde se ve claramente:

l1 = []
l1.append('1')
l1.append('2')
l2 = l1
l2.append('3')
print l1
>> ['1', '2', '3']