python包含6種內建序列:列表、元組、字串、unicode字串、buffer物件、xrange物件。
這些序列支援通用的操作:
索引是從0開始計數;當索引值為負數時,表示從最後乙個元素(從右到左)開始計數。這裡列舉幾個例子:
#字串字面值可以直接使用索引,不需要專門的變數引用
>>> 'hello world!'[0]
'h'>>> 'hello world!'[11]
'!'#注意越界
>>> 'hello world!'[12]
traceback (most recent call last):
file "", line 1, in indexerror: string index out of range
#表示右邊第乙個
>>> 'hello world!'[-1]
'!'>>> 'hello world!'[-11]
'e'#注意越界
>>> 'hello world!'[-12]
'h'>>> 'hello world!'[-13]
traceback (most recent call last):
file "", line 1, in indexerror: string index out of range
#注意不包括右邊索引值對應的元素
>>> num = [1,2,3,4,5,6,7,8,9,10]
>>> num[3]
4>>> num[6]
7>>> num[3:6]
[4, 5, 6]
#留意右邊邊界
>>> num[3:9]
[4, 5, 6, 7, 8, 9]
#右邊越界,剛好是10對應的下乙個索引值
>>> num[3:10]
[4, 5, 6, 7, 8, 9, 10]
#右邊越界
>>> num[3:11]
[4, 5, 6, 7, 8, 9, 10]
#注意是不包含最後乙個元素的
>>> num[-3:-1]
[8, 9]
>>> num[-4:-1]
[7, 8, 9]
>>> num[-10:-1]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
#注意右邊界
>>> num[-10:0]
>>> num[-5:-1]
[6, 7, 8, 9]
#注意右邊界
>>> num[-5:]
[6, 7, 8, 9, 10]
>>> num[-5:1]
>>> num[3:1]
>>> num[3:-1]
[4, 5, 6, 7, 8, 9]
#取最右3個元素
>>> num[-3:]
[8, 9, 10]
#取最左3個元素
>>> num[:3]
[1, 2, 3]
#可以加入step length
>>> num[1:10:3]
[2, 5, 8]
>>> num[0:10:3]
[1, 4, 7, 10]
#起始位置預設為最左和最右,但不包括最右的元素
>>> num[::2]
[1, 3, 5, 7, 9]
>>> num[0:9:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> num[0:10:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
#如果step length為0,會報錯,也就是說步長不可以為0
>>> num[1:5:0]
traceback (most recent call last):
file "", line 1, in valueerror: slice step cannot be zero
#如果步長為負數,表示從右向左提取元素
#注意不包括6對應的元素
num[10:6:-1]
[10, 9, 8]
#倒序輸出
>>> num[10::-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
#從最左邊開始
>>> num[:-3:1]
[1, 2, 3, 4, 5, 6, 7]
>>> num[:3:1]
[1, 2, 3]
#從最右邊開始
>>> num[:3:-1]
[10, 9, 8, 7, 6, 5]
要點:分片包括起始索引對應的元素,但不包括終止索引對應的元素。如果索引值為負值,則表示從最右邊元素開始,需避免索引越界。
表示兩個序列的相連,但是僅允許相同型別的序列才能進行連線操作。舉例:
#列表
>>> [1,2,3] + [3,2,1]
[1, 2, 3, 3, 2, 1]
#字串
>>> 'hi' + ',' + 'baby'
'hi,baby'
#元組(tuple)
>>> ('this','is','a') + ('test','case')
('this', 'is', 'a', 'test', 'case')
#如果序列型別不一致,則會報錯
>>> 'hi' + [1,2]
traceback (most recent call last):
file "", line 1, in typeerror: cannot concatenate 'str' and 'list' objects
小結:序列支援『+』運算,表示兩個相同型別的序列的連線。
'*'運算表示生成乙個元素重複多次的序列,舉例:
>>> 'hi '*5
'hi hi hi hi hi '
>>> "hello" * 3
'hellohellohello'
>>> (1,2,3) * 4
(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3)
>>> [1,2,3] * 4
[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
#支援none
>>> [none]*10
[none, none, none, none, none, none, none, none, none, none]
#支援交換律
>>> 4 * [1,2,3]
[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
乘法表示將序列重複n次以生成乙個新的序列,可以用none進行初始化乙個序列。 Python 中序列的索引與分片
python中常用的序列有列表 list 元組 tuple 與字串。對於python中的序列,可以使用索引來訪問其成員,得到的結果是單個元素。其形式為seq index 另外python中的索引可以使用負整數來表示,最後乙個元素使用負索引為 1,向前依次遞減。l 1,4,7,2,5,8,3,6,9 ...
Python索引和分片
python的應用廣泛,可以實現很多強大的功能,今天就給大家詳細介紹下python索引和分片。1 序列 序列是多個元素按照一定規則組成的物件,對於乙個有序序列,我們可以通過索引位置的方法訪問對應位置的值。2 索引 好比一本書目錄,利用目錄中的頁碼,可以快速的查詢所需要的內容,python使用中括號 ...
python筆記序列
唉,為了讓自己用最短的時間實現專案中的一些功能,又撿起了python.color green 序列 一組資料的有序的集合 因為有序所有可以重複 序列大體上可以分為兩種 1 可以改變集合中的元素 列表 2 不可以改變集合的元素 元組和字串 字串是字元的集合,元組中可以放任何資料。color color...