What does list[x::y] do?

Possible Duplicate:
Good Primer for Python Slice Notation

I've been reading over some sample code lately and I've read quite a few websites but I just can't seem to get the query right to give me an answer I'm looking for. If anyone could help me out I'd appreciate it.


It slices

x[startAt:endBefore:skip]

if you use skip = 2 , every other element the list beginning at startAt and ending at endBefore will be selected. [Remember: indices live BETWEEN list elements]

To see this, enter

x = range(100)

at the Python prompt. Then try these things

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

and see what happens.


L[x::y] means a slice of L where the x is the index to start from and y is the step size. Here are some examples you can try in the interpreter

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

If you want every 3rd element

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

Now every third element starting from L[1]

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

Now every third element starting from L[2]

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

You can specify a negative step to go backwards

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

You can also assign to this slice, but the value must have the same length as the slice you are replacing

>>> 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]

Finally, you can delete every 3rd element like this

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

This is the syntax for list slicing. When you say,

list[a:b:c],

a is the starting index, b is the ending index and c is the optional step size. This will give you a list starting at index a(inclusive) and ending at index b(exclusive) picking elements at a step of c.

For example,

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

If I say l[2:6:2], this will give me [3,5].

If you skip the end index, like in your question, it would take elements from the start index (x), pick every yth element until it reaches the end of the list if y is positive and beginning of the list if y is negative.

Eg l[1::-1] = [2,1]

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

The default step size is 1.

链接地址: http://www.djcxy.com/p/26734.html

上一篇: 1在Python中的意思?

下一篇: list [x :: y]是做什么的?