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.

Tarea en array 2D – Python

Soy traductor/a de documentos de TI y te traduciré lo siguiente al español. Por favor, no traduzcas el código y el resultado en markdown.

Soy nuevo/a en Python.
Estoy intentando asignar variables en una matriz 2D, estoy usando un bucle For solo para la primera dimensión, la segunda dimensión la estoy asignando manualmente:

A = [3, 4]
B = []

for i in range(len(A)):
B[i2][0] = 5
B[i
2][1] = 6
B[i*2][2] = 7

B[i2 +1][0] = 10
B[i
2 +1][1] = 10
B[i*2 +1][2] = 10

Espero ver la matriz B[4][3]:

B[0] = [5, 6, 7]

B[1] = [10, 10, 10]

B[2] = [5, 6, 7]

B[3] = [10, 10, 10]

Pero estoy recibiendo este error:

Traceback (most recent call last):
File “E:\Python\assignment1_materials\ex1_student_solution.py”, line 30, in
B[i*2][0] = 5
IndexError: list index out of range

¿Qué estoy haciendo mal?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que la lista B no está inicializada correctamente con el número requerido de elementos. El código intenta acceder a elementos en B que no existen, lo que lleva al error “IndexError: list index out of range”. Para solucionar esto, antes del bucle, B necesita ser inicializada como una lista 2D con el número correcto de filas (dos veces la longitud de A en este caso) y columnas (3 en este caso). Aquí está una versión actualizada del código con los cambios necesarios:

    A = [3, 4]
    B = [[0]*3 for i in range(len(A)*2)]
    
    for i in range(len(A)):
        B[i*2][0] = 5
        B[i*2][1] = 6
        B[i*2][2] = 7
    
        B[i*2 +1][0] = 10
        B[i*2 +1][1] = 10
        B[i*2 +1][2] = 10
    
    print(B)
    

    Esto debería imprimir la matriz B deseada como:

    [[5, 6, 7], [10, 10, 10], [5, 6, 7], [10, 10, 10]]
    

Comments are closed.