切片python
取一个list或tuple的部分元素是很是常见的操做。好比,一个listapp
L=[0,1,2,3,4,5,6,7,8,9]
取前3个元素,应该怎么作函数
笨方法,一个个列出来blog
>>> [L[0],L[1],L[2]] [0, 1, 2]
假如须要列出N个可是N很大 索引
循环方法字符串
>>> r=[] >>> n=3 >>> for i in range(n): ... r.append(L[i]) ... >>> r [0, 1, 2]
对于常常去指定索引范围的操做,用循环十分繁琐,所以pythone提供了切片操做符能大大简化操做class
>>> L[0:3] [0, 1, 2]
L[0:3]表示,从索引0开始,直到索引3,可是不包含索引3,及索引0,1,2 一共3个元素循环
若是第一个索引为0能够省略语法
>>> L[:3] [0, 1, 2]
也能够从索引1开始,取出2个元素来方法
>>> L[1:3] [1, 2]
相似也能够倒数切片,-1表明倒数第1个索引
>>> L[-2:] [8, 9] >>> L[-2:-1] [8]
默认取的间隔是1也能够定义,隔几个去一个
从索引0取到索引9没隔两个取一个
>>> L[0:10:2] [0, 2, 4, 6, 8]
什么都不写,只写[:]就能够原样复制一个list
>>> L[:] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
tuple也是一个list,惟一区别是tuple不可变.tuple切片也是一个tuple
>>> (0,1,2,3,4,5)[:3] (0, 1, 2)
字符串'xxx'也是能够当作是一种list,也能够切片返回的是一个字符
>>> 'abcde'[:3] 'abc'
切片函数slice
语法
class slice(stop) class slice(start, stop[, step])
参数说明
start--起始位置 默认为None stop--结束位置 自定义 step--间距 默认为None间距为1
>>> myslice=slice(3) >>> myslice slice(None, 3, None) >>> L[myslice] [0, 1, 2] >>> print(myslice.start) None >>> print(myslice.step) None >>> print(myslice.stop) 3
以上
myslice=(3) 等价于 myslice=slice(0,3,1)
自定义间隔step
#切片范围为0-10 间距为2 >>> myslice=slice(0,10,2) #查看参数 >>> myslice slice(0, 10, 2) >>> L[myslice] [0, 2, 4, 6, 8]