切片
取一个list或tuple的部分元素是非常常见的操作。比如,一个list
L=[0,1,2,3,4,5,6,7,8,9]
取前3个元素,应该怎么做
笨方法,一个个列出来
>>> [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提供了切片操作符能大大简化操作
>>> 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]