TODOPIC

Lenguajes de programación para PC => Python => Mensaje iniciado por: Daniel1952 en 02 de Mayo de 2022, 11:37:14

Título: Lista de listas o multilista en Python.
Publicado por: Daniel1952 en 02 de Mayo de 2022, 11:37:14
Hola Picuino, hola a todos ¿cómo están?, les cuento lo que me pasa con las listas.
Esta es la función.

Código: [Seleccionar]
def verificarMasUna(corregir, total):
    error = indice = 0
    filtro = []
    lenCorregir = len(corregir)
    for linea in total:
        if len(linea) == lenCorregir:   
            for letra in linea:
                letraCor = corregir[indice]
                if letra != letraCor:
                    error += 1
                indice += 1
            if error >= 1 and error <= 2:
                filtro.append(linea)
           
            indice = error = 0

    return filtro

Lo que quiero guardar en cada fila (no encuentro la denominación correcta) es:
La letra
La palabra(linea)
El índice(en el cual se encuentra la(s) letra(s) diferente(s))
El error
Necesito una lista de listas, lo intente con append, extend y nada.-
Desde ya gracias y espero ayuda.-

Slds. Daniel ☕☕☕
Título: Re:Lista de listas o multilista en Python.
Publicado por: Picuino en 02 de Mayo de 2022, 14:41:13
Hola Daniel, te adjunto el programa que has enviado un poco mejorado con lo que creo que quieres hacer.

Código: Python
  1. def verificar(palabra, lemario):
  2.     filtro = []
  3.     len_palabra = len(palabra)
  4.     for lema in lemario:
  5.         if len_palabra == len(lema):  
  6.             errores = 0
  7.             for indice in range(len_palabra):
  8.                 if palabra[indice] != lema[indice]:
  9.                     errores += 1
  10.             if errores >= 1 and errores <= 2:
  11.                 filtro.append([lema, errores])
  12.     return filtro

Y un poco más conciso, devolviendo las letras diferentes:
Código: Python
  1. def verificar(palabra, lemario):
  2.     filtro = []
  3.     len_palabra = len(palabra)
  4.     for lema in lemario:
  5.         if len_palabra == len(lema):  
  6.             errores = [a + '->' + b  for a, b in zip(palabra, lema) if a != b]
  7.             if len(errores) >= 1 and len(errores) <= 2:
  8.                 filtro.append([lema, errores])
  9.     return filtro

Título: Re:Lista de listas o multilista en Python.
Publicado por: Daniel1952 en 02 de Mayo de 2022, 17:14:22
Gracia Picuino, me falta una cosita, no tengo nada de experiencia
con la compresión de listas, por eso te consulto ¿podría insertarse un índice
donde se encuentran las diferencias?, lo que ocurre que las letras pueden
repetirse y luego no sé exactamente cuál intercambiar.-

Slds. Daniel ☕☕☕
Título: Re:Lista de listas o multilista en Python.
Publicado por: Daniel1952 en 02 de Mayo de 2022, 18:32:36
Bueno, algo logré, con esto me arreglo.-

Código: [Seleccionar]
def verificar(palabra, lemario):
    filtro = []
    len_palabra = len(palabra)
    indice = 0
    for lema in lemario:
        if len_palabra == len(lema):   
            errores = [ i for i in range(len(palabra)) if palabra[i] != lema[i]]
            if len(errores) >= 1 and len(errores) <= 2:
                filtro.append([lema, errores])
    return filtro

palabra = "abanzar"
Citar
['avanzar', [1]]
['abarcar', [3, 4]]
['abrazar', [2, 3]]
['abundar', [2, 4]]

Slds. Daniel ☕☕☕
Título: Re:Lista de listas o multilista en Python.
Publicado por: Picuino en 03 de Mayo de 2022, 11:19:21
Creo que esto es lo que buscas:

Código: Python
  1. def verificar(palabra, lemario):
  2.     filtro = []
  3.     len_palabra = len(palabra)
  4.     for lema in lemario:
  5.         if len_palabra == len(lema):  
  6.             errores = [(i+1, lema[i]) for i in range(len_palabra) if palabra[i] != lema[i]]
  7.             if len(errores) >= 1 and len(errores) <= 2:
  8.                 filtro.append([lema, errores])
  9.     return filtro

palabra = "abanzar"

Resultado:
Código: [Seleccionar]
[
   ['avanzar', [(2, 'v')]],
   ['abarcar', [(4, 'r'), (5, 'c')]],
   ['abrazar', [(3, 'r'), (4, 'a')]],
   ['abundar', [(3, 'u'), (5, 'd')]]
]
Título: Re:Lista de listas o multilista en Python.
Publicado por: Daniel1952 en 03 de Mayo de 2022, 11:57:01
Siiiii genio total eso es precisamente lo que buscaba/necesitaba, mil gracias.- ((:-)) ((:-)) ((:-))
¿Me parece a mi o el índice en todos los casos se pasa en uno.?

Slds. Daniel ☕☕☕
Título: Re:Lista de listas o multilista en Python.
Publicado por: Picuino en 03 de Mayo de 2022, 12:39:41
Es que he añadido uno al índice:

    errores = [(i+1, lema[ i ]) for i in range(len_palabra) if palabra[ i ] != lema[ i ]]

Porque me parecía más natural que la primera letra se nombrase con un 1. Pero claro en Python los índices comienzan en cero. Igual te he liado un poco con eso, pretendía todo lo contrario.

Un saludo.