一、概要
在Python中,最基本的數(shù)據(jù)結(jié)構(gòu)是序列(sequence)。序列中的每個(gè)元素被分配一個(gè)序號(hào)——即元素的位置,也稱為索引。第一個(gè)索引是 0,第二個(gè)則是 1,以此類推。序列中的最后一個(gè)元素標(biāo)記為 -1,倒數(shù)第二個(gè)元素為 -2,一次類推。 Python包含 6 中內(nèi)建的序列,包括列表、元組、字符串、Unicode字符串、buffer對(duì)象和xrange對(duì)象。
- 索引
- 分片
- 加
- 乘
- 檢查某個(gè)元素是否屬于序列
- 計(jì)算序列長(zhǎng)度
- 計(jì)算最大元素及最小元素
二、索引
- 概念
元素在序列中的編號(hào)。這些編號(hào)從0開始遞增,0表示第一個(gè)元素,最后一個(gè)元素為序列的長(zhǎng)度-1 - 語(yǔ)法格式
seq[索引] -
結(jié)構(gòu)圖
image - 示例代碼
字符串中使用索引
函數(shù)中使用索引,有一些函數(shù)的返回值為字符串,有的返回其他的序列,我們可以在函數(shù)調(diào)用之后使用[]來(lái)對(duì)返回序列的元素值進(jìn)行索引demo = 'Hello World' print(demo[0]) #輸出 H print(demo[5]) #輸出空格字符串 print(demo[-1]) #輸出 d #思考可不可以索引是-0In [6]: input("請(qǐng)輸入:")[1] 請(qǐng)輸入:123 Out[6]: '2'
三、切片
- 定義
切片也叫分片,即提取一個(gè)范圍內(nèi)的序列 - 語(yǔ)法格式
序列名(或字符串字面值)[beg_index:end_index,step] - 說(shuō)明
- beg_index
起始下標(biāo),默認(rèn)0 - end_index
終止下標(biāo),默認(rèn)取到末尾 - step:
表示取值的步長(zhǎng),默認(rèn)為1,步長(zhǎng)值不能為0,默認(rèn)為1,步長(zhǎng)可以為負(fù)數(shù),表示從右向左提取元素
- beg_index
- 注意事項(xiàng)
- 范圍采用左閉右開(顧頭不顧尾),即第一個(gè)索引元素包含在分片內(nèi),第二個(gè)則不包含在分片內(nèi)。
- 終止索引超出范圍時(shí),分片直接取到序列最后一個(gè)元素
- 索引和步長(zhǎng)都具有正負(fù)兩個(gè)值,分別表示左右兩個(gè)方向取值。索引的正方向從左往右取值,起始位置為0;
- 負(fù)方向從右往左取值,起始位置為-1。因此任意一個(gè)序列結(jié)構(gòu)數(shù)據(jù)的索引范圍為 -len到 len-1范圍內(nèi)的連續(xù)整數(shù)。
- 示例代碼
1、同時(shí)忽略兩個(gè)索引,整個(gè)序列都成為分片了
2、開始索引,結(jié)束索引默認(rèn),步長(zhǎng)默認(rèn),從包含的開始索引截取至末尾cele = "you can you up ,no can no bb ^_^" print(cele[:]) #輸出 全部
3、開始索引為負(fù)數(shù),結(jié)束索引默認(rèn),步長(zhǎng)默認(rèn),從右邊開始截取至末尾print(cele[1:])
4、結(jié)束索引,開始索引忽略,步長(zhǎng)默認(rèn),截取0至結(jié)束索引print(cele[-1:])
5、結(jié)束索引為負(fù)數(shù),開始索引忽略,步長(zhǎng)默認(rèn),截取0至右邊結(jié)束索引print(cele[:5])
6、開始索引比結(jié)束索引的元素在序列中出現(xiàn)得晚時(shí),切片為空序列print(cele[:-3])
7、步長(zhǎng)為2,截取開始索引到結(jié)束索引print(cele[-3:1])
8、左索引比右索引的元素在序列中出現(xiàn)得晚時(shí)print(cele[0:10:2])print(cele[::-1]) #反置 - 總結(jié)
- seq[start_index]
返回索引值為start_index的對(duì)象。start_index為 -len(seq)到len(seq)-1之間任意整數(shù)。 - seq[start_index: end_index]
返回索引值為start_index到end_index-1之間的連續(xù)對(duì)象。 - seq[start_index: end_index : step]
返回索引值為start_index到end_index-1之間,并且索引值與start_index之差可以被step整除的連續(xù)對(duì)象。 - seq[start_index: ]
缺省end_index,表示從start_index開始到序列中最后一個(gè)對(duì)象。 - seq[:end_index]
缺省start_index,表示從序列中第一個(gè)對(duì)象到end_index-1之間的片段。 - seq[:]
缺省start_index和end_index,表示從第一個(gè)對(duì)象到最后一個(gè)對(duì)象的完整片段。 - seq[::step]
缺省start_index和end_index,表示對(duì)整個(gè)序列按照索引可以被step整除的規(guī)則取值
- seq[start_index]
四、序列相乘
- 說(shuō)明
用數(shù)字x乘以一個(gè)序列會(huì)產(chǎn)生新的序列,在新的序列中,原來(lái)的序列將被重復(fù)x次 - 示例代碼
i = '1' * 5 print(type(i)) print(i)
五、序列相加
- 說(shuō)明
兩個(gè)序列相加返回一個(gè)新的序列 - 示例代碼
seq1 = 'Hello' seq2 = 'World' seq3 = seq1 + seq2 print(seq3)
六、使用None創(chuàng)建空序列
- 示例代碼
sequence = 10 * [None] sequence [None, None, None, None, None, None, None, None, None, None]
七、是否包含
- 說(shuō)明
指某值是否在序列中,使用in運(yùn)算符,運(yùn)算符結(jié)果為布爾值True 或者 False - 語(yǔ)法格式
'某值' in 序列 - 示例代碼
cele = "you can you up ,no can no bb ^_^" print('y' in cele) # True print('^_^' in cele) # True print('you1' in cele) # false
八、序列長(zhǎng)度
- 內(nèi)置函數(shù)
len(序列) - 示例代碼
cele = "you can you up ,no can no bb ^_^" print(len(cele)) #32
九、最小值
- 內(nèi)置函數(shù)
min(序列) - 示例代碼
#純數(shù)字 numbers = "123456789" print(min(numbers)) #1 #純字母 letter = "abcdef" #字母加數(shù)字 letter = "abcdef123" print(min(letter)) #1 #中文 底層比較是Unicode編碼 letter = "時(shí)間在哪里,成就就在哪里" print(min(letter)) #輸出 ,(\u002c)
十、最大值
- 內(nèi)置函數(shù)
max(序列) - 示例代碼
#純數(shù)字 numbers = "123456789" print(max(numbers)) #9 #純字母 letter = "abcdef" #字母加數(shù)字 letter = "abcdef123" print(max(letter)) #f #中文 底層比較是Unicode編碼 letter = "時(shí)間在哪里,成就就在哪里" print(max(letter)) #輸出 間(\u95f4)
