Autor
		 | 
		
			Tema: [Python] - Matrices.  (Leído 19,773 veces)
		 | 
	 
 
	
		
			
				
					
						
							Novlucker
							
								Ninja y 
								Colaborador
								    
								  Desconectado
								Mensajes: 10.683
								 
								Yo que tu lo pienso dos veces
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
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  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
							
						 | 
						
							
							 
							
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
								Mensajes: 2.416
								
								 
								Se siente observado ¬¬'
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
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  Saludos Entonces si que se hacen dos for, no?    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Novlucker
							
								Ninja y 
								Colaborador
								    
								  Desconectado
								Mensajes: 10.683
								 
								Yo que tu lo pienso dos veces
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Ya ya, pero a lo que voy es que no son más vueltas    y lo de la diagonal es la comparación   [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   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
								Mensajes: 2.416
								
								 
								Se siente observado ¬¬'
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Novlucker, podrais postear exactamente el codigo que has utilizado para medir el tiempo con timeit? asi puedo mejorar mis marcas    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Novlucker
							
								Ninja y 
								Colaborador
								    
								  Desconectado
								Mensajes: 10.683
								 
								Yo que tu lo pienso dos veces
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Este ... import timeit def test():     n = 10     M = []     for i in range(n):         a = [0] * n         a[i] = 1         print a         M.append(a)   if __name__=='__main__':     from timeit import Timer     t = Timer("test()", "from __main__ import test")     print t.timeit(1000) 
 
 ... pero, le he quitado los comentarios y ha bajado 8 segundos?    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   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
								Mensajes: 2.416
								
								 
								Se siente observado ¬¬'
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Pues te gano yo quitando los prints   import timeit def test1():     n = 10     M = [[int(i==e) for i in range(n)] for e in range(n)] def test2():     n = 10     M = []     for i in range(n):         a = [0] * n         a[i] = 1         M.append(a)   if __name__=='__main__':     from timeit import Timer     t = Timer("test1()", "from __main__ import test1")     print t.timeit(10000), "->Novlucker"     t = Timer("test2()", "from __main__ import test2")     print t.timeit(10000), "->Karcrack" 
 
 Tienes que tener en cuenta que yo llamo a print() n veces, y tu solo una...   Lo he ejecutado 10 veces y mira los resultados: 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    MOD: He hecho una version ligeramente mas rapida       n = 10     M = [[0]*n for i in range(n)]     while n:         n-=1         M[n][n] = 1 
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Última modificación: 16 Noviembre 2010, 19:53 pm por Karcrack »
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Novlucker
							
								Ninja y 
								Colaborador
								    
								  Desconectado
								Mensajes: 10.683
								 
								Yo que tu lo pienso dos veces
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Pues si   Supongo que pesa la comparación que hago para determinar la diagonal, y que tu clonas la lista y yo la genero   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   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  
						 | 
					 
				 
			 |  
		 
	 |  
	 |  
 
	 
	
 
			 
			
				
					
						| Mensajes similares | 
					 
					
						 | 
						Asunto | 
						Iniciado por | 
						Respuestas | 
						Vistas | 
						Último mensaje | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Filas de Matrices en Python
							 
							Scripting
						 | 
						
							AgnesBlack
						 | 
						
							0
						 | 
						
							2,939
						 | 
						
							 
							
								16 Octubre 2011, 01:51 am 
								por AgnesBlack
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							{Python 3.4} Problema con programa matrices
							 
							Scripting
						 | 
						
							dj28
						 | 
						
							2
						 | 
						
							3,999
						 | 
						
							 
							
								 7 Julio 2014, 00:21 am 
								por Almapa
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Ayuda: Multiplicación de matrices - Python
							 
							Ejercicios
						 | 
						
							Itzhack
						 | 
						
							1
						 | 
						
							12,763
						 | 
						
							 
							
								 4 Noviembre 2014, 01:29 am 
								por Minusfour_cierralo_o_baneamefull
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Python -- Creación de Matrices
							 
							Programación General
						 | 
						
							scyssor91
						 | 
						
							0
						 | 
						
							2,207
						 | 
						
							 
							
								13 Abril 2016, 20:17 pm 
								por scyssor91
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							matrices en python 
							 
							Scripting
						 | 
						
							py.cba
						 | 
						
							1
						 | 
						
							2,578
						 | 
						
							 
							
								24 Noviembre 2016, 04:22 am 
								por Once
							
						 | 
					 
				 
			    |