Tengo el siguiente código que elimina los duplicados en una lista:
list1 = [1, 1, 1, 3, 3, 3, 56, 6, 6, 6, 7]
list2 = []
map(lambda x: not x in list2 and list2.append(x), list1)
print(list2)
list2 = []
[list2.append(c) for c in list1 if c not in list2]
print(list2)
list2 = []
for c in list1:
if c not in list2:
list2.append(c)
print(list2)
En Python 2.7 imprime:
[1, 3, 56, 6, 7]
[1, 3, 56, 6, 7]
[1, 3, 56, 6, 7]
En Python 3.4 imprime:
[]
[1, 3, 56, 6, 7]
[1, 3, 56, 6, 7]
La función map no devuelve una lista en Python 3.4, devuelve un iterable el cual (al igual que los Enumerables en C#) no produce resultados hasta que se consume. Si se quieren los resultados de la función map en una lista en Python 3.4, se debe hacer:
list(map(lambda x: not x in list2 and list2.append(x), list1))
Más información en la pregunta que hice en StackOverflow:
http://es.stackoverflow.com/a/47861 en español
http://stackoverflow.com/a/42043141 en inglés