序列是指成員有序排列,可以通過(guò)下標(biāo)偏移量訪問(wèn)的類型。Python序列包括:字符串、列表和元組。
序列的每個(gè)元素可以指定一個(gè)偏移量得到,多個(gè)元素是通過(guò)切片操作得到的。下標(biāo)偏移量從0開(kāi)始計(jì)數(shù)到總數(shù)-1結(jié)束。
序列類型操作符
這些操作符是對(duì)所有序列類型都適用的。
| 序列操作符 | 作用 |
| seq[ind] | 獲得下標(biāo)為ind的元素 |
| seq[ind1:ind2] | 獲得下標(biāo)從ind1到ind2的元素集合 |
| seq * exPR | 序列重復(fù)expr次 |
| seq1 + seq2 | 連接序列seq1和seq2 |
| obj in seq | 判斷obj元素是否在seq中 |
| obj not in seq | 判斷obj元素是否不再seq中 |
seq[ind]有下面這段代碼
>>> lst = [1,2,3,4,5,6]>>> exp = "abcdef">>> tub = ("apple","orange","banana","watermelon")>>> print lst[2] #打印列表中下標(biāo)為2的元素3>>> print exp[0] #三種序列的使用方式一致a>>> print tub[3]watermelon>>> print lst[-1]#負(fù)索引,以結(jié)束為起點(diǎn)6>>> print lst[6]#索引不能超出序列長(zhǎng)度Traceback (most recent call last):File "<pyshell#7>", line 1, in <module>print lst[6]#索引不能超出序列長(zhǎng)度IndexError: list index out of range>>> print [1,2,3,4,5,6][0] #可以不將序列賦值直接使用1>>> print 'abcde'[0] #可以不將序列賦值直接使用a
上面涵蓋了seq[ind]的幾種使用方案。正索引的偏移數(shù)是 0 到(總元素?cái)?shù)量-1),從首元素開(kāi)始索引;負(fù)索引的偏移數(shù)是 -1 到 負(fù)的總元素?cái)?shù)量,從尾元素開(kāi)始索引。
但是這種索引方式只能索引一個(gè)元素,多個(gè)元素索引使用
sequence[start_index:end_index(:step)]
有如下代碼
>>> lst = [1, 2, 3, 4, 5, 6]>>> print lst[:] #省略兩個(gè)坐標(biāo)則從開(kāi)始到結(jié)束[1, 2, 3, 4, 5, 6]>>> print lst[3:] #省略結(jié)束坐標(biāo)[4, 5, 6]>>> print lst[:5] #省略開(kāi)始坐標(biāo)[1, 2, 3, 4, 5]>>> print lst[::2] #步長(zhǎng)為2,隔一個(gè)取一個(gè)[1, 3, 5]>>> print lst[::-1] #反向序列[6, 5, 4, 3, 2, 1]>>> print lst[1:5:2] #從坐標(biāo)1到坐標(biāo)5之間,隔一個(gè)取一個(gè)[2, 4]>>> print lst[-5:-3][2, 3]>>> print lst[-1:100][6]>>> print lst[-6:-4] #負(fù)索引,并不負(fù)輸出[1, 2]>>> print lst[-3:5] #正負(fù)索引同時(shí)存在時(shí),坐標(biāo)只代表位置,截取位置間的元素[4, 5]>>> print lst[:100] #索引可以超出序列長(zhǎng)度[1, 2, 3, 4, 5, 6]>>> print lst[-5:100] #索引可以超出序列長(zhǎng)度[2, 3, 4, 5, 6]
關(guān)于切片運(yùn)算,還有一個(gè)值得說(shuō)的事,如果使用負(fù)索引:
>>> lst = [1,2,3,4,5,6,7]>>> print lst[:-2][1, 2, 3, 4, 5]>>> print lst[:-1][1, 2, 3, 4, 5, 6]>>> print lst[:0][]當(dāng)負(fù)索引是尾坐標(biāo)時(shí),我們永遠(yuǎn)無(wú)法截到最后一個(gè)元素,因?yàn)?1是負(fù)索引最大的值,如果使用0則會(huì)認(rèn)為是正索引。
這種情況下,我們可以使用None來(lái)代替0的位置
>>> print lst[:None][1, 2, 3, 4, 5, 6, 7]
連接操作符 +
連接操作符允許把多個(gè)序列連在一起,但只能連接同樣的對(duì)象。都是列表,都是字符串或都是元組
>>> num_lst = [1,2,3,4]>>> mixup_lst = [567,'abc',[123,'aaa']]>>> num_lst + mixup_lst[1, 2, 3, 4, 567, 'abc', [123, 'aaa']]>>> string = 'abcdef'>>> num_lst + stringTraceback (most recent call last):File "<pyshell#4>", line 1, in <module>num_lst + stringTypeError: can only concatenate list (not "str") to list
重復(fù)操作符(*)
>>> mixup_lst = [567,'abc',[123,'aaa']]>>> string = 'abcdef'>>> mixup_lst * 2[567, 'abc', [123, 'aaa'], 567, 'abc', [123, 'aaa']]>>> string * 3'abcdefabcdefabcdef'>>> mixup_lst * mixup_lstTraceback (most recent call last):File "<pyshell#9>", line 1, in <module>mixup_lst * mixup_lstTypeError: can't multiply sequence by non-int of type 'list'
* 后只能接數(shù)字,代表重復(fù)次數(shù),否則都會(huì)錯(cuò)誤
成員關(guān)系操作 in , not in
>>> mixup_list = ['a',123,['x',1.4,35]]>>> 'a' in mixup_listTrue>>> 'x' in mixup_listFalse>>> 'x' in mixup_list[2]True>>> string = 'abcdef'>>> 'a' in stringTrue>>> 'bcd' in stringTrue>>> 'abd' in stringFalse
以上是in的幾種操作,用于判別元素是否屬于這個(gè)序列。如果使用not in 則結(jié)果相反。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注