2012-01-27 11 views
6

Duplicar posible:
Good Primer for Python Slice Notation¿Qué hace la lista [x :: y] hacer?

He estado leyendo sobre algunos ejemplos de código últimamente y he leído un buen número de sitios web, pero me parece que no puede conseguir la consulta derecho a darme una respuesta que estoy buscando. Si alguien pudiera ayudarme, lo agradecería.

+0

Si realiza un poco de búsqueda, encontrará muchas publicaciones con preguntas similares (y respuestas similares). Creo que este debe estar cerrado – juliomalegria

Respuesta

13

Se rebana

x[startAt:endBefore:skip] 

si utiliza skip = 2, todos los demás elementos de la lista a partir de las startAt y terminando en endBefore serán seleccionados. [Recuerde: índices en vivo entre elementos de la lista]

Para ver esto, entran

x = range(100) 

en el indicador de Python. Luego pruebe estas cosas

x[::2] 
x[::3] 
x[10:40:6] 

y vea qué ocurre.

0

Significa crear una nueva lista de x hasta el final con el paso y:

>>> l = range(10) 
>>> list(l[2::2]) 
[2, 4, 6, 8] 
0

Devuelve una lista que contiene todos los elementos YTH de lista que comienza en el índice x.

>>> alist = range(10) 
>>> alist[0::2] 
[0, 2, 4, 6, 8] 
2

Esta es la sintaxis de la lista de corte. Cuando dice,

list[a:b:c], 

a es el índice inicial, b es el índice final y c es el tamaño de la etapa opcional. Esto le dará una lista que comienza en el índice a (inclusive) y termina en el índice b (exclusivo) elementos de selección en un paso de c.

Por ejemplo,

l = [1,2,3,4,5,6,7] 

Si digo l [2: 6: 2], esto me [3,5] dar.

Si omite el índice final, como en su pregunta, tomaría elementos del índice de inicio (x), escoge cada elemento yth hasta que llegue al final de la lista si y es positivo y al comienzo de la lista si y es negativo

E.g.l [1 :: - 1] = [2,1]

l [1 :: 2] = [2,4,6]

El tamaño de paso predeterminado es 1.

9

L[x::y] medios una porción de L donde el x es el índice para comenzar y y es el tamaño del paso. He aquí algunos ejemplos que puede probar en el intérprete

>>> L=range(20) 
>>> L 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 

Si desea cada 3er elemento

>>> L[::3] 
[0, 3, 6, 9, 12, 15, 18] 

Ahora cada tercer elemento a partir de L [1]

>>> L[1::3] 
[1, 4, 7, 10, 13, 16, 19] 

Ahora uno de cada tres elemento a partir de L [2]

>>> L[2::3] 
[2, 5, 8, 11, 14, 17] 

puede especificar un paso negativo a ir hacia atrás

>>> L[::-1] 
[19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0] 

También puede asignar a este pedazo, pero el valor debe tener la misma longitud que el segmento que está reemplazando

>>> L[::3]=[0,0,0,0,0,0,0] 
>>> L 
[0, 1, 2, 0, 4, 5, 0, 7, 8, 0, 10, 11, 0, 13, 14, 0, 16, 17, 0, 19] 

Por último, puede eliminar cada 3º elemento como este

>>> del L[::3] 
>>> L 
[1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19]