es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comparando dos listas de forma recursiva.

Mi profesor me dio una tarea de Python para comparar dos listas bidimensionales, devolver True si todos los objetos en las listas son similares y False si no lo son. Las listas son del tipo – list[list[int]]. Esto debe hacerse utilizando recursividad. No se me permite usar bucles o slicing. (pero puedo acceder a un índice específico en la lista). La división interna de las listas puede ser diferente, pero siempre que todos los elementos en lugares similares en la lista sean similares, la función devolverá True. Por ejemplo, [[1], [2, 3, 4]], [[1, 2], [3, 4]] – la función devolverá verdadero. Espero que los detalles estén claros, ¡gracias! Mi pregunta es encontrar una solución a este problema 🙂

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para resolver este problema, podemos utilizar la recursión con los siguientes pasos:

    1. Comprobar si la longitud de ambas listas es la misma. Si no, devolver Falso.
    2. Si ambas listas están vacías, devolver Verdadero.
    3. Comprobar si el primer elemento de ambas listas es una lista. Si es así, llamar a la función recursivamente con los primeros elementos de ambas listas.
    4. Si ambos primeros elementos no son lista, compararlos. Si son diferentes, devolver Falso.
    5. Llamar a la función recursivamente con las partes restantes de ambas listas.

    Aquí está el código de ejemplo para implementar esta lógica:

    def compare_2d_lists(lst1, lst2):
        if len(lst1) != len(lst2):
            return False
        elif len(lst1) == 0 and len(lst2) == 0:
            return True
        elif isinstance(lst1[0], list) and isinstance(lst2[0], list):
            return compare_2d_lists(lst1[0], lst2[0]) and compare_2d_lists(lst1[1:], lst2[1:])
        elif lst1[0] == lst2[0]:
            return compare_2d_lists(lst1[1:], lst2[1:])
        else:
            return False
    

    Para probar esta función, podemos utilizar el siguiente código:

    list1 = [[1], [2, 3, 4]]
    list2 = [[1, 2], [3, 4]]
    list3 = [[1, 2], [3, 4]]
    print(compare_2d_lists(list1, list2))  # Verdadero
    print(compare_2d_lists(list2, list3))  # Verdadero
    print(compare_2d_lists(list1, list3))  # Falso
    

    ¡Espero que esta solución le ayude a resolver su tarea!

Comments are closed.