leosan
Registrado: 19 Abr 2012 Mensajes: 730 Ubicación: GRAN CANARIA
| Publicado: 28/02/2013 7:55 am | | | Título: [SOLUCIONADO] Matriz Bidimensional con uno de más PYTHON 3.x |
| Teóricamente es una matriz de 3x4, pero se "cuela" uno más.
Al correr el código:
| Código: | m=3 n=4 b = [[m]*n for x in range(n)] for i in range (m): for j in range (n): b[i][j]=(i*j+i+j) print (b[i][j],end=' ') print () print (b) print () |
Imprime por un lado de forma correcta:
| Código: | 0 1 2 3 1 3 5 7 2 5 8 11 |
Pero al hacer print (b) sale esto otro:
| Código: | [[0, 1, 2, 3], [1, 3, 5, 7], [2, 5, 8, 11], [3, 3, 3, 3]] |
Y la duda es de dónde diablos sale el "cuarto" elemento;[3, 3, 3, 3]. Porque si hago:
| Código: | for j in range (m): print (b[j]) print () print () |
sale de forma correcta:
| Código: | [0, 1, 2, 3]
[1, 3, 5, 7]
[2, 5, 8, 11] |
y no admite range (m+1) para ver al "otro".
Saluditos!. ...
P.D: Ya lo ví :"b = [[m]*n for x in range( n )]". Como n llega a 4 y se ha inicializado a m=3 saldrán n=4 vectores o listas, vamos que n es el número de filas.
La forma correcta, inicializando a cero sería:
| Código: | m=3 n=4 print ('b=[[0] * n for i in range (m)]\n') b=[[m] * n for i in range (m)] print (b) #[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] print ()
for i in range (m): for j in range (n): b[i][j]=(i+j) print (b[i][j],end=' ') print () ''' 0 1 2 3 1 2 3 4 2 3 4 5 ''' print (b) # [[0, 1, 2, 3], [1, 2, 3, 4], [2, 3, 4, 5]] |
O como tenía inicialmente, sólo que en ese caso la matriz es de 4x4:
| Código: | m=3 n=4 print ('b=[[0] * n for i in range (n)]\n') b=[[m] * n for i in range (n)] print (b) #[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] print ()
for i in range (n): for j in range (n): b[i][j]=(i+j) print (b[i][j],end=' ') print () ''' 0 1 2 3 1 2 3 4 2 3 4 5 3 4 5 6 ''' print (b) # [[0, 1, 2, 3], [1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6]] |
Como resumen de pequeñas variantes a la hora de declarar e inicializar:
| Código: | print ('array None: [[None for col in range(5)] for row in range(3)]\n') #inicializa una matriz mxn a None array = [[None for col in range(5)] for row in range(3)] print (array) #[[None, None, None, None, None], [None, None, None, None, None], [None, None, None, None, None]] print ()
print (' array2D a 0 = [[0 for col in range(5)] for fil in range(3)]\n' ) ##inicializa una matriz mxn a ceros array2D = [[0 for col in range(5)] for row in range(3)] print (' array2D') print (array2D) '''array2D [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]''' print ()
m = int(input("Filas: ")) n = int(input("Columnas: "))
'otro array None' print ('c=[[None]*n for i in range(m)]\n') c=[[None]*n for i in range(m)] print (c,'\n')#[[None, None, None, None], [None, None, None, None], [None, None, None, None]] for i in range (m): for j in range (n): c[i][j]=(j-i) print (c[i][j],end=' ') print () ''' 0 1 2 3 -1 0 1 2 -2 -1 0 1 '''
print (c,'\n') #[[0, 1, 2, 3], [-1, 0, 1, 2], [-2, -1, 0, 1]]
print ('c=c=[[0] * n for i in range (m)]\n') c=[[0] * n for i in range (m)] #inicializa una matriz mxn a ceros print (c) for i in range (m): for j in range (n): c[i][j]=(i+j+i*j) print (c[i][j],end=' ') print () print (c) print ()
print ('a=[] y m a[i].append(i+j)\n') a=[] for i in range (m): a.append([]) for j in range (n): a[i].append(i+j) print (a[i][j],end=' ') print ()
print () ''' 0 1 2 3 1 2 3 4 2 3 4 5 '''
print ('b=[[0] * n for i in range (m)]\n') b=[[0] * n for i in range (m)] print (b) #[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] print ()
for i in range (m): for j in range (n): b[i][j]=(i+j) print (b[i][j],end=' ') print () ''' 0 1 2 3 1 2 3 4 2 3 4 5 ''' print (b) # [[0, 1, 2, 3], [1, 2, 3, 4], [2, 3, 4, 5]]
for j in range (m): print (b[j]) print () print () ''' [0, 1, 2, 3]
[1, 3, 5, 7]
[2, 5, 8, 11] ''' print (b) print ('tabla: [[ 0 for i in range(n) ] for j in range(m)]\n')
tabla= [[ 0 for i in range(n) ] for j in range(m)] print (tabla) #[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] for i in range (m): for j in range (n): tabla[i][j]=(i*j+i+j) print (tabla[i][j],end=' ') print () ''' 0 1 2 3 1 3 5 7 2 5 8 11 ''' print (tabla) # [[0, 1, 2, 3], [1, 3, 5, 7], [2, 5, 8, 11]] print ()
b=[[None] * n for i in range (m)] for i in range (m): for j in range (n): b[i][j]=(i*j+i+j) print (b[i][j],end=' ') print () print (b) # [[0, 1, 2, 3], [1, 3, 5, 7], [2, 5, 8, 11]] print () ''' 0 1 2 3 1 3 5 7 2 5 8 11 '''
|
Saluditos!, otra vez y perdón por la extensión... |
|