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.

Problema con los elementos de listas dimensionales.

Soy un traductor de español que traduce documentos de IT. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown

Soy nuevo en Python y encontré un problema. Cuando uso este código, obtengo la salida deseada.

    list1=[[1,3,5,7],
    [18,9,23,30]


    ]
    list2 = [1,3,7]
    print(list1[0].index(1))
output = 0

Pero cuando uso este código, obtengo una salida incorrecta a pesar de que 1 está en esta lista.

list1=[[1,3,5,7],
[18,9,23,30]


]
list2 = [1,3,7]
print(list1[0].index(1))
for element in list2:
    if element in list1:
        print(list1[0].index(element))
    else:
        print("Element not in list1")

output = 0
Element not in list1
Element not in list1
Element not in list1

¿Por qué funciona así? El segundo problema es que usé print(list1[0].index(1)) para obtener el segundo índice, porque sabía que esta letra estaría en la fila = 0. ¿Hay una manera más universal de obtener solo el segundo o solo el primer índice sin importar si conocemos el número de columna o fila?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La razón por la cual el segundo código no funciona como se espera es porque el operador in verifica si un elemento está presente en cualquier lugar de la lista, no solo en una fila o columna particular. En el bucle for, la comprobación element in list1 verifica si toda la lista element está presente en list1, lo cual no es el caso.

    Para solucionar esto, puedes iterar sobre filas y columnas y utilizar bucles anidados para verificar cada elemento individualmente:

    list1=[[1,3,5,7],
    [18,9,23,30]]
    
    list2 = [1,3,7]
    
    for i, fila in enumerate(list1):
        for j, elemento in enumerate(fila):
            if elemento in list2:
                print("Elemento encontrado en el índice ({},{})".format(i,j))
    

    Este código itera sobre filas y columnas utilizando enumerate y verifica si cada elemento individual está presente en list2 utilizando if elemento in list2. Si se encuentra un elemento, imprime su índice utilizando las variables de bucle i y j.

    En cuanto a tu segunda pregunta, si deseas encontrar el índice de un elemento en una lista multidimensional sin saber su fila o columna, puedes utilizar un bucle for anidado para buscar en cada fila y columna hasta que se encuentre el elemento. Aquí hay un ejemplo:

    list1=[[1,3,5,7],
    [18,9,23,30]]
    
    elemento = 18
    
    for i, fila in enumerate(list1):
        for j, valor in enumerate(fila):
            if valor == elemento:
                print("Elemento encontrado en el índice ({},{})".format(i,j))
                break
        else:  # Este else se ejecuta si no se produce un break en el bucle interno
            continue
        break  # Este break se ejecuta si se produce un break en el bucle interno
    

    Este código itera sobre cada fila y columna utilizando enumerate y verifica si el valor actual coincide con el elemento que estamos buscando. Si lo hace, imprime el índice utilizando i y j. Las declaraciones else y break se utilizan para salir de ambos bucles si se encuentra el elemento, sin continuar buscando innecesariamente.

Comments are closed.