切片
取一个list或tuple的部分元素是非常常见的操作。比如,一个list如下:
>>> L = [‘Michael‘,‘Sarah‘,‘Tracy‘,‘Bob‘,‘Jack‘]
取前3个元素,应该怎么做?
笨办法:
>>> [L[0],L[1],L[2]] [‘Michael‘,‘Tracy‘]
如果列表长度为1000,想要取出前index为100-200的元素,这种方法就不太方便。当然可以用循环来实现,但是十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。
例(1):
取出列表前三个元素:
L = [‘Michael‘,‘Jack‘] print(L[0:3])#表示,从索引开始取,直到索引为止,但不包括索引。即索引,,,正好是3个元素。 print(L[:3])#如果第一个索引是,还可以省略:L[0:3]0330120
也可以从索引1开始,取出2个元素出来:
>>> L = [‘Michael‘,‘Jack‘] >>> L[1:3] [‘Sarah‘,‘Tracy‘]
类似的,既然Python支持L[-1]
取倒数第一个元素,那么它同样支持倒数切片,试试:
>>> L = [‘Michael‘,‘Sarah‘,‘Tracy‘,‘Bob‘,‘Jack‘
>>> L[-2:]
[‘Bob‘,‘Jack‘]
>>>
例(2):
切片也可以跳着取值,比如每个两个取一个值,每5个取一个值,试试:
>>> L=list(range(100)) >>> L [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99] >>>
取出所以偶数,L[::2]省略的参数,默认值为0
>>> L[::2] [0,2,98] >>>
前20个数每个5个取一个数;
>>> L[0:20:5] [0,15] >>>
注意:tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:
>>> T[0:3] (1,3) >>>
字符串‘xxx‘
也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:
>>> L=‘ABCDEF‘ >>> L[0:5] ‘ABCDE‘ >>>