Python高階特性 切片 Slice

2021-07-02 16:44:32 字數 2102 閱讀 2848

如何在乙個陣列中取特定的一組資料?

是乙個個指定?

>>> l = range(10)

>>> l

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> l[0]

0>>> l[1],l[2],l[3]

(1, 2, 3)

>>>

資料少還行,要是資料多呢?迴圈怎麼樣?

>>> l = range(10)

>>> l

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> for i in range(3):

... print l[i]

...012

>>>

這個迴圈是單個輸出,要是需要輸出陣列還要做一下修改

>>> l = range(10)

>>> l

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> r =

>>> for i in range(3):

...

>>> r

[0, 1, 2]

>>>

如果不需要連續取數,而是要間隔取數呢?有點要瘋的感覺吧?是不是感覺很麻煩?python提倡的」優雅」,」簡潔」的特性何在?python不能忍啊所以提出了切片這種神奇的東東. 還是用上面的例子:

>>> l

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> l

[0:5] #

[0, 1, 2, 3, 4]

>>> l

[:5] #若是從list的頭部開始索引,0可以省略.

[0, 1, 2, 3, 4]

>>> l

[1:5]

[1, 2, 3, 4]

通過使用乙個簡單的冒號:就能優雅的輸出陣列了,還要什麼迴圈!python你的節操掉了!根據陣列的特性我們還可以倒著輸出.

>>> l

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> l

[-5:]

[5, 6, 7, 8, 9]

>>> l

[-5:-1] #倒數第乙個元素的索引是`-1`

[5, 6, 7, 8]

這裡有個地方要注意比如某乙個切片是這樣的l[x:y]其中必須x

>>> l = range(10)

>>> l[5:4]

我還會大跳!

前十個數,每兩個取乙個:

>>> l

[:10:2]

[0, 2, 4, 6, 8]

100個陣列中,沒5個取乙個:

>>> l=range(100)

>>> l[::5] #l[:]是全部顯示的意思.

[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

tuple,str,unicode也是可以的

tuple也是一種list,不過tuple是不可變的,所以tuple也可以使用切片,不過輸出的還是tuple罷了.

>>> l=(1,2,3,4)

>>> l[:2]

(1, 2)

同樣string***或unicodeu'***'也是一種list,所以也可以使用切片.

>>> l='abcde'

>>> l[:2]

'ab'

>>> l='我來了'

>>> l[:2]

'\xe6\x88'

>>> l=u'我來了'

>>> l[:2]

u'\u6211\u6765'

>>>

Python 高階特性 切片

在list,string 中取部分元素的操作是十分常見的 如下list list 1,2,qwe 3,asd list 1,2,qwe 3,asd 想要取中間三個元素,要怎麼做?笨方法 1 直接利用索引取值 list 1 list 2 list 3 2,qwe 3 如果有100個元素或者1000元素...

Python高階特性之切片

切片操作符是序列名後跟乙個方括號,方括號中有一對可選的數字,並用冒號分割。注意這與你使用的索引操作符十分相似。記住數是可選的,而冒號是必須的。切片操作符中的第乙個數 冒號之前 表示切片開始的位置,第二個數 冒號之後 表示切片到 結束,第三個數 冒號之後 表示切片間隔數。如果不指定第乙個數,pytho...

python高階特性(1) 切片

原文 取乙個list或tuple的部分元素是非常常見的操作。比如,乙個list如下 l michael sarah tracy bob jack 取前3個元素,應該怎麼做?笨辦法 l 0 l 1 l 2 michael sarah tracy 之所以是笨辦法是因為擴充套件一下,取前n個元素就沒轍了。...