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?
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ónelement in list1
verifica si toda la listaelement
está presente enlist1
, lo cual no es el caso.Para solucionar esto, puedes iterar sobre filas y columnas y utilizar bucles anidados para verificar cada elemento individualmente:
Este código itera sobre filas y columnas utilizando
enumerate
y verifica si cada elemento individual está presente enlist2
utilizandoif elemento in list2
. Si se encuentra un elemento, imprime su índice utilizando las variables de buclei
yj
.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:
Este código itera sobre cada fila y columna utilizando
enumerate
y verifica si el valor actual coincide con elelemento
que estamos buscando. Si lo hace, imprime el índice utilizandoi
yj
. Las declaracioneselse
ybreak
se utilizan para salir de ambos bucles si se encuentra el elemento, sin continuar buscando innecesariamente.