转载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]]
[012]

  假如需要列出N个但是N很大 

  循环方法

1
2
3
4
5
6
7
>>> r=[]
>>> n=3
>>> for in range(n):
...   r.append(L[i])
...
>>> r
[012]

  对于经常去指定索引范围的操作,用循环十分繁琐,因此pythone提供了切片操作符能大大简化操作

1
2
>>> L[0:3]
[012]

  L[0:3]表示,从索引0开始,直到索引3,但是不包含索引3,及索引0,1,2 一共3个元素

  如果第一个索引为0可以省略

1
2
>>> L[:3]
[012]

  也可以从索引1开始,取出2个元素来

1
2
>>> L[1:3]
[12]

  类似也可以倒数切片,-1代表倒数第1个索引

1
2
3
4
>>> L[-2:]
[89]
>>> L[-2:-1]
[8]

  默认取的间隔是1也可以定义,隔几个去一个

  从索引0取到索引9没隔两个取一个

1
2
>>> L[0:10:2]
[02468]

  什么都不写,只写[:]就可以原样复制一个list

1
2
>>> L[:]
[0123456789]

  tuple也是一个list,唯一区别是tuple不可变.tuple切片也是一个tuple

1
2
>>> (0,1,2,3,4,5)[:3]
(012)

  字符串'xxx'也是可以看成是一种list,也可以切片返回的是一个字符

1
2
>>> 'abcde'[:3]
'abc'

  

  切片函数slice

  语法

1
2
class slice(stop)
class slice(start, stop[, step])

  参数说明

1
2
3
start--起始位置  默认为None
stop--结束位置   自定义
step--间距         默认为None间距为1

  

1
2
3
4
5
6
7
8
9
10
11
>>> myslice=slice(3)
>>> myslice
slice(None3None)
>>> L[myslice]
[012]
>>> 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)
#查看参数
>>> myslice
slice(0102)
>>> L[myslice]
[02468]
悟已往之不谏,知来者之可追
原文地址:https://www.cnblogs.com/ljh-study/p/14421579.html