[L[i] for i in xrange(len(L)) if i%2==0][:100]

marcelino villarino aguiar mvillarino en eresmas.com
Mar Abr 22 09:12:23 CEST 2003


y si primero creas una copia de los 200 primeros elementos de tu lista 
de 1e6 elementos?, algo así

s=L[:200]
[s[i] for i in range(len(s)) if i%2==0]

para lo de la secuencia a voluntad esto debiera funcionar:

deb fib(i):
     resultado=[]
     a, b = 0, 1
     for j in range(i):
          resultado.append(b)
          a, b = b, a+b
     return resultado
#sea L la lista de datos
extracto=[L[i] for i in fib(100)]


En otro orden de cosas, hace un tiempo, cuando estré en la lista, 
incluí un mensage con el texto de un guión que utilizo frecuentemente 
y que sigo intentando optimizar( ya lo ha hecho en gran medida), en el 
se calculan los valores máximos y minimos de las diferentes variables 
que componen una tabla de datos, puesta como lista de listas, el 
código el versión LC es algo así:

#esto calcula los mínimos de [
#                              [ a1, b1, c1, d1],
#                              [ a2, b2, c2, d2],
#                              .....
#                              [ an, bn, cn,dn]
#                            ]
# excepto para ai

infimos=[min([materiais[j][i] for j in range(len(nateriais))]) for i 
in range(1, len materiais[0]-1)]
# anda que nom mola maço

#analogamente para supremos.

Por dierto, me gustó lo de la variable al vuelo, es una cosa que 
cuando empecé a hacer cosillas quise aprender pero no logré, si me 
acuerdo para que lo quería intentaré hacer buen uso.

Estoy de acuerdo en que la CL resulta más liosa cuando empiezas a 
anidar bucles, pero con un poco de práctica se hace más clara. Como 
siempre, combiene utilizar más lineas de comentarios que de código.
Saludos




Más información sobre la lista de distribución Python-es