python提供了一个切片功能,用这种方法可以很简单的获取列表或者元组等的某几个元素,切片返回的结果的类型和被切片的是保持一致的;基本用法如下:
>>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
>>> L[0:3]
['Michael', 'Sarah', 'Tracy']
>>> t=('a','b','c','d','e','f')
>>> t[0:3]
('a', 'b', 'c')
如上范例中0:3
即表示编号从0开始到3结束的元素;
更简单写法可以把0
省掉:
>>> L[:3]
['Michael', 'Sarah', 'Tracy']
也可以不从0开始:
>>> L[1:3]
['Sarah', 'Tracy']
由于编号除了可以从0开始外,也可以从-1
开始,即从最后一个元素开始,所以切片也可以这样写:
>>> L[-3:-1]
['Tracy', 'Bob']
>>> L[-3:]
['Tracy', 'Bob', 'Jack']
切片也是可以设置步进的,基本语法为[start:stop:step]
:
>>> t[0:5:2]
('a', 'c', 'e')
如果start
为0
,则可以不写:
>>> t[:5:2]
('a', 'c', 'e')
如果stop
为最后一个元素的索引,则可以不写:
>>> t[::2]
('a', 'c', 'e')
如果step也不写,那么就是原样复制:
>>> t[::]
('a', 'b', 'c', 'd', 'e', 'f')
字符串也是可以切片的,譬如:
>>> 'aabbccddeeff'[2:8:3]
'bc'
stop
写了超出列表长度的索引也不会报错,如下:
>>> t[:20:3]
('a', 'd')
注意:set
和dict
这两种是不支持切片的;
del
语句可以直接使用切片,这样可以删掉列表中的一部分,例如:
>>> del L[0:2]
>>> L
['Tracy', 'Bob', 'Jack']
>>> del L
>>> L
Traceback (most recent call last):
File "" , line 1, in <module>
NameError: name 'L' is not defined
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431756919644a792ee4ead724ef7afab3f7f771b04f5000