Python - Eliminar duplicados incluyendo al elemento

   
Vista:

Eliminar duplicados incluyendo al elemento

Publicado por Jose Luis (3 intervenciones) el 20/06/2017 17:56:14
Holaaa quisiera que me ayuden con este programaa porfaaa, no se como eliminar los duplicados y el numero mismoooo!!
Me pide que de una lista elimine todos los numeros repetidos, intente con set y otros metodos, pero solo eliminan los duplicados, tmb necesito que se elimine el numero orginal
Osea en resumen mostrar los elementos que no se repitennnn

Mostrar aquellos elementos de una lista que no tienen duplicados.

Input Format

Una lista de números enteros separados por espacios.

Output Format

Los números que no tienen duplicados ordenados de menor a mayor separados por un espacio en blanco.

Sample Input 0

5 3 8 1 2 10 12 1 3 5 9

Sample Output 0

2 8 9 10 12
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip

Eliminar duplicados incluyendo al elemento

Publicado por kip (242 intervenciones) el 20/06/2017 18:19:47
Hola, podrias por favor colocar el codigo que tienes hasta ahora ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Urban_WildCat

Eliminar duplicados incluyendo al elemento

Publicado por Urban_WildCat wildcaturban@gmail.com (4 intervenciones) el 26/06/2017 02:17:11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def elimina_dup(duplicados):
    #Creo una lista con todos los números sin duplicar.
    numeros=list(set(duplicados))
    #Lista vacía que se devolvera:
    output=[]
 
    for num_duplicado in duplicados:
        #Si el número de veces que se repite el número es menor o igual que 1:
        if (duplicados.count(num_duplicado)<=1):
            #Se añade el número al output.
            output.append(num_duplicado)
 
    return output
 
 
 
lista_numeros=[5,3,8,1,2,10,12,1,3,5,9]
print(sorted(elimina_dup(lista_numeros)))
#Print: [2, 8, 9, 10, 12]

A ver si te vale :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

Eliminar duplicados incluyendo al elemento

Publicado por kip (242 intervenciones) el 26/06/2017 02:50:02
Hola, no lo tomes a mal pero porque colocas una variable que jamas usas ? numeros=list(set(duplicados))

Existe la subclase Counter que ayuda mucho en estos casos, ademas del uso de filter(), lo digo para que mejores:

1
2
3
4
5
6
7
from collections import Counter
 
lista_nums = [5, 3, 8, 1, 2, 10, 12, 1, 3, 5, 9]
 
n_lista_nums = sorted(list(filter(lambda num: Counter(lista_nums).get(num) == 1, lista_nums)))
 
print(*n_lista_nums)

https://docs.python.org/3/library/collections.html#collections.Counter
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Urban_WildCat

Eliminar duplicados incluyendo al elemento

Publicado por Urban_WildCat wildcaturban@gmail.com (4 intervenciones) el 26/06/2017 03:04:38
Tienes toda la razón del universo, pensaba hacerlo de otra forma y se me ha pirado la pinza. Muchas gracias por la corrección. Aún no me he metido con las lambda expressions, lo tengo pendiente. . Gracias igualmente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

Eliminar duplicados incluyendo al elemento

Publicado por kip (242 intervenciones) el 26/06/2017 03:33:39
Las funciones lambda son simples funciones anonimas (funciones de una sola linea), se usan en ocasiones simples como la que mostre arriba, en el caso de filter() es porque me lo exige y debo enviarle una funcion que se encargue de la logica que se usara para el filtrado pero podria colocar una funcion normal ya que filter() la aceptara, :

1
2
3
4
5
6
7
8
9
10
from collections import Counter
 
lista_nums = [5, 3, 8, 1, 2, 10, 12, 1, 3, 5, 9]
 
def duplicado(num):
    if Counter(lista_nums).get(num) == 1: return num
 
n_lista_nums = sorted(list(filter(duplicado, lista_nums)))
 
print(*n_lista_nums)

Aunque podria hacerse simplemente con compresión de listas:

1
2
3
4
5
6
7
from collections import Counter
 
lista_nums = [5, 3, 8, 1, 2, 10, 12, 1, 3, 5, 9]
 
n_lista_nums = sorted([num for num in lista_nums if Counter(lista_nums).get(num) == 1])
 
print(*n_lista_nums)

Esto te ayudara:

https://docs.python.org/3.0/library/functions.html#filter
http://recursospython.com/guias-y-manuales/funciones-lambda/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad