Filtrar Elementos Duplicados En Un Array Tipo String[]


Objetivo: Filtrar Elementos Duplicados En Un Array Tipo String[]
Hola,

A raíz de este código de Python:

lista = list(set(lista)) #Filtra la lista quitando los duplicados

Me ha surgido esta pregunta; yo se hacerlo a mi manera en gambas, pero, ¿Existe algo parecido en gambas de como se hace en Python?

Gracias.

última edición por gambafeliz el Lunes, 09 Septiembre 2019, 10:40; editado 1 vez
Perfil MP  
Objetivo: Re: Filtrar Elementos Duplicados En Un Array Tipo String[]
Que yo sepa, no.

Perfil MP  
Objetivo: Re: Filtrar Elementos Duplicados En Un Array Tipo String[]
Que yo sepa tampoco, peeeeero...
Tengo esta pequeña funcion que lo hace
Public Function ListDeldup(stxInput As String[]) As String[] ''Elimina elementos duplicados de una lista, requiere una String[] y devuelve una String[].

Dim strTmp As String
Dim stxOut As New String[]

stxInput.Sort

For Each strTmp In stxInput
If stxOut.Find(strTmp) = -1 Then
stxOut.Add(strTmp)
Endif
Next

Return stxOut

End

Saludos.

Perfil MP  
Objetivo: Re: Filtrar Elementos Duplicados En Un Array Tipo String[]
shordi y tincho

Muchas gracias.

Nota: Que se le va hacer

Perfil MP  
Objetivo: Re: Filtrar Elementos Duplicados En Un Array Tipo String[]
tincho escribió: [Ver mensaje]
Que yo sepa tampoco, peeeeero...
Tengo esta pequeña funcion que lo hace
Public Function ListDeldup(stxInput As String[]) As String[] ''Elimina elementos duplicados de una lista, requiere una String[] y devuelve una String[].

Dim strTmp As String
Dim stxOut As New String[]

stxInput.Sort

For Each strTmp In stxInput
If stxOut.Find(strTmp) = -1 Then
stxOut.Add(strTmp)
Endif
Next

Return stxOut

End

Saludos.


Permiteme una corrección, sino te importa. Como estamos con cadenas, he tenido el siguiente problema con tu código:

"AliExpress"
"AliExpress "

Al pasarlo por tú código me ha dado por válidas ambas cadenas, pero son la misma. Por lo tanto corrige tu IF de comparación por este otro:

If aCadena.Find(LTrim(RTrim(sCadena))) = -1 Then

Saludos, joven.

Perfil MP  
Objetivo: Re: Filtrar Elementos Duplicados En Un Array Tipo String[]
gambafeliz escribió: [Ver mensaje]
...Permiteme una corrección, sino te importa. Como estamos con cadenas, he tenido el siguiente problema con tu código:
"AliExpress"
"AliExpress "
Al pasarlo por tú código me ha dado por válidas ambas cadenas, pero son la misma. Por lo tanto corrige tu IF de comparación por este otro:
If aCadena.Find(LTrim(RTrim(sCadena))) = -1 Then

Podría ser pero cual es el válido a dejar en la lista ? el que tiene espacio al final o el que no lo tiene.
Si a la función le agregásemos dicha sentencia de comparación ya dejaría de ser una función general.
Como sabes, en unix o linux en este caso, la "filosofía" pasa por tener pequeños programas o funciones que hacen una cosa y bien, y si se necesita mas complejidad entonces se "acoplan" la salida de un programa con la entrada de otro.
Por eso la función no comprueba el "parecido" de las cadenas solo compara si son "iguales" o no.
Lo mismo pasaría con "andaafreirchurros" y "ANDAAFREIRCHURROS" en ambos casos se impera a ir a freír churros pero ¿Con mayúsculas o con minúsculas?
Recuerda también que *nix diferencia G de g no como en güindos.
Pero gracias de todas maneras por el comentario.
Saludos.

Perfil MP  
Objetivo: Re: Filtrar Elementos Duplicados En Un Array Tipo String[]
gambafeliz escribió: [Ver mensaje]
LTrim(RTrim(sCadena))


...más exacto con Trim( ).

http://gambaswiki.org/wiki/lang/trim

Perfil MP  
Objetivo: Re: Filtrar Elementos Duplicados En Un Array Tipo String[]
vuott escribió: [Ver mensaje]
gambafeliz escribió: [Ver mensaje]
LTrim(RTrim(sCadena))


...más exacto con Trim( ).

http://gambaswiki.org/wiki/lang/trim


Gracias vuott pero no dije lo de Trim por que en la ayuda dice que solo "quita los espacio del final" y yo tonto de mi me lo he creído.

Pero gracias por aclaramelo.

Saludos


Trim.png
Descripción:  
Tamaño: 88.69 KB
Visto: 18 veces

Trim.png

Trim.png
Descripción:  
Tamaño: 88.69 KB
Visto: 18 veces

Trim.png

Trim.png
Descripción:  
Tamaño: 88.69 KB
Visto: 18 veces

Trim.png


Perfil MP  
Objetivo: Re: Filtrar Elementos Duplicados En Un Array Tipo String[]
tincho escribió: [Ver mensaje]

Si a la función le agregásemos dicha sentencia de comparación ya dejaría de ser una función general.
Como sabes, en unix o linux en este caso, la "filosofía" pasa por tener pequeños programas o funciones que hacen una cosa y bien, y si se necesita mas complejidad entonces se "acoplan" la salida de un programa con la entrada de otro.
Por eso la función no comprueba el "parecido" de las cadenas solo compara si son "iguales" o no.


tincho:

Como habrás notado yo lo que había hecho con mi intervención es un acto de buena fe. Y si no lo viste así pues perdón, vale.

Dejando de lado esta aclaración que creo que sobra para ti y para mi o eso supongo, vale

Mira he analizado tus palabras y tiene no solo la razón sino que es como dices.

Yo quería una función para filtrar los duplicados y es lo que me has aportado. Si yo quería una función para limpiar los espacio de la lista pues es otra y debe ser otra. Así se desarrolla de forma más coherente.

Son cosas que se aprenden con los años pero a mi a veces se me va la pinza y es bueno que otra persona te aclare las ideas erróneas.

Gracias, saludos.

Perfil MP  
Objetivo: Re: Filtrar Elementos Duplicados En Un Array Tipo String[]
gambafeliz escribió: [Ver mensaje]
...Si yo quería una función para limpiar los espacio de la lista pues es otra y debe ser otra. Así se desarrolla de forma más coherente.

No te creas que eso de programar de forma coherente ya nos viene de fabrica, en mi caso que vengo a la programación de forma autodidacta y voy aprendiendo de prueba-error y de ver el código de los demás. Así que esto de hacer funciones pequeñas que hace una sola cosa permite reutilizar el código una barbaridad de veces.
Por este motivo cuando veo que hay algo conceptual que se discute trato de transmitir mi experiencia, y explayarme un poco mas. Para intentar aconsejar desde la mejor de las inteciones.
Ojo no digo que lo mejor, solo es mi experiencia.
Saludos.

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4491s (PHP: -79% SQL: 179%)
Consultas SQL: 48 - Debug off - GZIP Activado