elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Python] - Matrices.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: [Python] - Matrices.  (Leído 17,824 veces)
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Python] - Matrices.
« Respuesta #10 en: 16 Noviembre 2010, 17:23 pm »

De hecho no, es que en mi caso no uso append para generar la lista, sino que la genero dinamicamnte con un for.

El primer for genera una lista de n elementos, y el for de afuera crea n listas (matriz n x n). La diagonal la defino con esa única comparación i==e :D

Saludos


En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: [Python] - Matrices.
« Respuesta #11 en: 16 Noviembre 2010, 17:29 pm »

Que interés, que fuerza, que motivación, que ilusión, que grandeza, qué ánimos, qué energía...
veo mucha profesionalidad aquí dentro.

¿Se puede hacer sencillo de entender?



En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [Python] - Matrices.
« Respuesta #12 en: 16 Noviembre 2010, 17:37 pm »

De hecho no, es que en mi caso no uso append para generar la lista, sino que la genero dinamicamnte con un for.

El primer for genera una lista de n elementos, y el for de afuera crea n listas (matriz n x n). La diagonal la defino con esa única comparación i==e :D

Saludos
Entonces si que se hacen dos for, no? :xD
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Python] - Matrices.
« Respuesta #13 en: 16 Noviembre 2010, 17:41 pm »

Ya ya, pero a lo que voy es que no son más vueltas :xD y lo de la diagonal es la comparación :P
[Edito]:
Ahora si por si acaso, medido el tiempo con timeit para n = 10 y 1000 repeticiones de la función (obviamente he quitado el input)

Karcrack = 23.4203746812
Novlucker = 6.43258395027 :D

Saludos
« Última modificación: 16 Noviembre 2010, 17:54 pm por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [Python] - Matrices.
« Respuesta #14 en: 16 Noviembre 2010, 17:58 pm »

Novlucker, podrais postear exactamente el codigo que has utilizado para medir el tiempo con timeit? asi puedo mejorar mis marcas :D
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Python] - Matrices.
« Respuesta #15 en: 16 Noviembre 2010, 18:06 pm »

Este ...
Código
  1. import timeit
  2. def test():
  3.    n = 10
  4.    M = []
  5.    for i in range(n):
  6.        a = [0] * n
  7.        a[i] = 1
  8.        print a
  9.        M.append(a)
  10.  
  11. if __name__=='__main__':
  12.    from timeit import Timer
  13.    t = Timer("test()", "from __main__ import test")
  14.    print t.timeit(1000)

... pero, le he quitado los comentarios y ha bajado 8 segundos? :huh: Igual ahora lo repetí 4 veces y da 16/17.

Ahí lo único que haces es cambiar lo que está en la función test, que para el caso de mi código no es más que poner las líneas de la creación de la lista M y el print :P

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [Python] - Matrices.
« Respuesta #16 en: 16 Noviembre 2010, 19:34 pm »

Pues te gano yo quitando los prints :P
Código
  1. import timeit
  2. def test1():
  3.    n = 10
  4.    M = [[int(i==e) for i in range(n)] for e in range(n)]
  5. def test2():
  6.    n = 10
  7.    M = []
  8.    for i in range(n):
  9.        a = [0] * n
  10.        a[i] = 1
  11.        M.append(a)
  12.  
  13. if __name__=='__main__':
  14.    from timeit import Timer
  15.    t = Timer("test1()", "from __main__ import test1")
  16.    print t.timeit(10000), "->Novlucker"
  17.    t = Timer("test2()", "from __main__ import test2")
  18.    print t.timeit(10000), "->Karcrack"
Tienes que tener en cuenta que yo llamo a print() n veces, y tu solo una... :P

Lo he ejecutado 10 veces y mira los resultados:
Código:
1.05840686456 ->Novlucker
0.208165562942 ->Karcrack
1.00837229313 ->Novlucker
0.21114219824 ->Karcrack
0.989414576434 ->Novlucker
0.205958299169 ->Karcrack
0.987928354023 ->Novlucker
0.208567848707 ->Karcrack
0.993568176961 ->Novlucker
0.210146820336 ->Karcrack
0.980355603855 ->Novlucker
0.204104990997 ->Karcrack
0.984192963072 ->Novlucker
0.205497626095 ->Karcrack
0.981901331035 ->Novlucker
0.203624203635 ->Karcrack
0.982219807266 ->Novlucker
0.2067748834 ->Karcrack
0.98221617552 ->Novlucker
0.283576264581 ->Karcrack
Mi codigo es aproximadamente 5 veces mas rapido :D


MOD: He hecho una version ligeramente mas rapida :)
Código
  1.    n = 10
  2.    M = [[0]*n for i in range(n)]
  3.    while n:
  4.        n-=1
  5.        M[n][n] = 1
« Última modificación: 16 Noviembre 2010, 19:53 pm por Karcrack » En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Python] - Matrices.
« Respuesta #17 en: 16 Noviembre 2010, 20:04 pm »

Pues si :P
Supongo que pesa la comparación que hago para determinar la diagonal, y que tu clonas la lista y yo la genero :P
Es decir, tu creas la lista con valores por defecto y la modificas, yo hago las verificaciones antes de crearla, pero obviamente termina siendo más ligero :xD

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Filas de Matrices en Python
Scripting
AgnesBlack 0 2,714 Último mensaje 16 Octubre 2011, 01:51 am
por AgnesBlack
{Python 3.4} Problema con programa matrices
Scripting
dj28 2 3,645 Último mensaje 7 Julio 2014, 00:21 am
por Almapa
Ayuda: Multiplicación de matrices - Python
Ejercicios
Itzhack 1 12,420 Último mensaje 4 Noviembre 2014, 01:29 am
por Minusfour_cierralo_o_baneamefull
Python -- Creación de Matrices
Programación General
scyssor91 0 1,984 Último mensaje 13 Abril 2016, 20:17 pm
por scyssor91
matrices en python
Scripting
py.cba 1 2,315 Último mensaje 24 Noviembre 2016, 04:22 am
por Once
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines