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]

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM