/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

[SOLUCIONADO] Matriz Bidimensional con uno de más PYTHON 3.x

 
      Índice del Foro elrincondelc.com -> Otros lenguajes
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
leosan



Registrado: 19 Abr 2012
Mensajes: 730
Ubicación: GRAN CANARIA

MensajePublicado: 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...
Volver arriba
      Índice del Foro elrincondelc.com -> Otros lenguajes
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com