Foros del Web » Programando para Internet » Python »

Listas de muchos elementos...

Estas en el tema de Listas de muchos elementos... en el foro de Python en Foros del Web. Holap: EN todos los ejemplos de Python que he visto, siempre las listas son de pocos elementos y se inicializan apenas se declaran, por ejemplo: ...
  #1 (permalink)  
Antiguo 21/04/2010, 18:33
 
Fecha de Ingreso: abril-2010
Mensajes: 7
Antigüedad: 14 años
Puntos: 0
Listas de muchos elementos...

Holap:

EN todos los ejemplos de Python que he visto, siempre las listas son de pocos elementos y se inicializan apenas se declaran, por ejemplo:

lista = [2,4,6,8,10]

...pero qué pasa si necesito una lista de, por ejemplo, unos 10.000 elementos??
Cómo puedo "decirle a Python" que quiero una lista con 10.000 elementos (los cuales llenaré más adelante usando un while)?

Help, pliss...

Saludooos :P
  #2 (permalink)  
Antiguo 21/04/2010, 21:22
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Listas de muchos elementos...

Puedes crear una lista con 10k de elementos claro que tienes que tener un valor inicial. Por ejemplo 0 o None.

por ejemplo:
Código Python:
Ver original
  1. n = 10000 #Numero de elementos
  2. lista = [None] * n #Crea una lista de n elementos None
  3. for i in xrange(10000): #xrange generador diferente de range que devuelve una lista
  4.     lista.append(raw_input("Dame algo:\n")) #Llenamos la lista con los valores que nosotros queremos
  #3 (permalink)  
Antiguo 21/04/2010, 23:32
 
Fecha de Ingreso: noviembre-2009
Mensajes: 186
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: Listas de muchos elementos...

perdona pero, .append no lo añadiria al final de la lista?. quiero decir, si fuera asi la lista acabaria teniendo 2000 elementos, no 1000, no se si me estoy explicando
  #4 (permalink)  
Antiguo 22/04/2010, 08:38
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Listas de muchos elementos...

Hola stiwi22,
Tenés razón, append lo agregaría al final de la lista. Seguramente razpeitia quiso escribir:

Código Python:
Ver original
  1. n = 10000 #Numero de elementos
  2. lista = [None] * n #Crea una lista de n elementos None
  3. for i in xrange(n): #xrange generador diferente de range que devuelve una lista
  4.     lista[i] = raw_input("Dame algo:\n") #Llenamos la lista con los valores que nosotros queremos

Este ejemplo, aunque es claro, no tiene mucho sentido para la intención original (de nada sirve declarar la lista con n posiciones si luego se la llenará secuencialmente )

AdamSmith: ¿Para qué necesitás una estructura creada para llenarla luego? Quizás haya alguna forma diferente de solucionar el problema que te ahorre crear una lista tan grande.


Saludos.

Última edición por AlvaroG; 22/04/2010 a las 08:50
  #5 (permalink)  
Antiguo 22/04/2010, 08:46
 
Fecha de Ingreso: noviembre-2009
Mensajes: 186
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: Listas de muchos elementos...

si el metodo append añade el elemento al final simplementre seria necesaria una inicializacion asi:
Código python:
Ver original
  1. Lista = []

y luego ya el bucle para meter los valores que quieras
  #6 (permalink)  
Antiguo 22/04/2010, 09:43
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Listas de muchos elementos...

AlvaroG gracias por la corrección, no vuelvo a postear con sueño
  #7 (permalink)  
Antiguo 22/04/2010, 10:55
 
Fecha de Ingreso: abril-2010
Mensajes: 7
Antigüedad: 14 años
Puntos: 0
Respuesta: Listas de muchos elementos...

Holap:

Muchas gracias por todas sus respuestas... es probable que la pregunta les parezca un poco extraña, pero es que soy un completo novato en Python... xD

Estaba pensando que otra forma de hacerlo es simplemente:

Código:
lista = range(0,10000)
Así fucionaría, o me equivoco?
...y aunque funcionara:
Es esta una forma "ortodoxa" de hacerlo?
O existe algún modo más simple?


Saludooos :P
  #8 (permalink)  
Antiguo 22/04/2010, 11:24
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Listas de muchos elementos...

Depende de lo quieras hacer.

Por ejemplo:
Código Python:
Ver original
  1. for i in range(10000):
  2.     print i
Como vemos en el código de arriba se ocupa mucha memoria, por que creamos una lista con 10000 elementos y luego lo iteramos sobre esa lista. (Ok 10000 elementos todavia no son tantos elementos).

Ahora un ejemplo usando un generador.
Código Python:
Ver original
  1. for i in xrange(10000):
  2.     print i
El generador como su nombre lo indica va generando elementos conforme lo necesite. De esta forma no necesitas tener una lista con todos los elementos.

En python 3.x cambiaron esto y range ahora es como xrange.

Claro que no necesitas (como en otros lenguajes) declarar el tamaño, ni el tipo. Solo creas tu lista y le vas añadiendo datos.
  #9 (permalink)  
Antiguo 23/04/2010, 08:18
 
Fecha de Ingreso: abril-2010
Mensajes: 7
Antigüedad: 14 años
Puntos: 0
Respuesta: Listas de muchos elementos...

Holap:

Lo que pasa es que quiero almacenar los primeros 10000 primos para verificar la conjetura de Goldbach, por eso es que necesito exactamente 10000... ni más ni menos... xD

Gracias por tu ayuda.

Saludooos :P
  #10 (permalink)  
Antiguo 23/04/2010, 08:31
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Listas de muchos elementos...

Haberlo dicho antes, puedes intentar con la criba de Eratóstenes. Ya hay una implementación en python en la wikipedia.

Etiquetas: elementos, listas, muchos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:05.