转载Python切片(小知识点)
Python3之切片及内置切片函数slice
转自:https://www.cnblogs.com/minseo/p/11113638.html 博主:minseo
切片
取一个list或tuple的部分元素是非常常见的操作。比如,一个list
|
1
|
L=[0,1,2,3,4,5,6,7,8,9] |
取前3个元素,应该怎么做
笨方法,一个个列出来
|
1
2
|
>>> [L[0],L[1],L[2]][0, 1, 2] |
假如需要列出N个但是N很大
循环方法
|
1
2
3
4
5
6
7
|
>>> r=[]>>> n=3>>> for i in range(n):... r.append(L[i])...>>> r[0, 1, 2] |
对于经常去指定索引范围的操作,用循环十分繁琐,因此pythone提供了切片操作符能大大简化操作
|
1
2
|
>>> L[0:3][0, 1, 2] |
L[0:3]表示,从索引0开始,直到索引3,但是不包含索引3,及索引0,1,2 一共3个元素
如果第一个索引为0可以省略
|
1
2
|
>>> L[:3][0, 1, 2] |
也可以从索引1开始,取出2个元素来
|
1
2
|
>>> L[1:3][1, 2] |
类似也可以倒数切片,-1代表倒数第1个索引
|
1
2
3
4
|
>>> L[-2:][8, 9]>>> L[-2:-1][8] |
默认取的间隔是1也可以定义,隔几个去一个
从索引0取到索引9没隔两个取一个
|
1
2
|
>>> L[0:10:2][0, 2, 4, 6, 8] |
什么都不写,只写[:]就可以原样复制一个list
|
1
2
|
>>> L[:][0, 1, 2, 3, 4, 5, 6, 7, 8, 9] |
tuple也是一个list,唯一区别是tuple不可变.tuple切片也是一个tuple
|
1
2
|
>>> (0,1,2,3,4,5)[:3](0, 1, 2) |
字符串'xxx'也是可以看成是一种list,也可以切片返回的是一个字符
|
1
2
|
>>> 'abcde'[:3]'abc' |
切片函数slice
语法
|
1
2
|
class slice(stop)class slice(start, stop[, step]) |
参数说明
|
1
2
3
|
start--起始位置 默认为Nonestop--结束位置 自定义step--间距 默认为None间距为1 |
|
1
2
3
4
5
6
7
8
9
10
11
|
>>> myslice=slice(3)>>> mysliceslice(None, 3, None)>>> L[myslice][0, 1, 2]>>> print(myslice.start)None>>> print(myslice.step)None>>> print(myslice.stop)3 |
以上
|
1
2
3
|
myslice=(3)等价于myslice=slice(0,3,1) |
自定义间隔step
|
1
2
3
4
5
6
7
|
#切片范围为0-10 间距为2>>> myslice=slice(0,10,2)#查看参数>>> mysliceslice(0, 10, 2)>>> L[myslice][0, 2, 4, 6, 8] |
悟已往之不谏,知来者之可追

浙公网安备 33010602011771号