如何在乙個陣列中取特定的一組資料?
是乙個個指定?
>>> 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個元素就沒轍了。...