Python筆記 序列(一)索引 分片

2022-02-07 20:40:37 字數 3401 閱讀 8106

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...