Python3之切片及内置切片函数slice

     切片

    取一个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]

  

posted @ 2019-07-01 13:52  minseo  阅读(7229)  评论(0编辑  收藏  举报