8、Python 序列

一、概要

在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ì)象。

  1. 索引
  2. 分片
  3. 檢查某個(gè)元素是否屬于序列
  4. 計(jì)算序列長(zhǎng)度
  5. 計(jì)算最大元素及最小元素

二、索引

  1. 概念
    元素在序列中的編號(hào)。這些編號(hào)從0開始遞增,0表示第一個(gè)元素,最后一個(gè)元素為序列的長(zhǎng)度-1
  2. 語(yǔ)法格式
    seq[索引]
    
  3. 結(jié)構(gòu)圖


    image
  4. 示例代碼
    字符串中使用索引
    demo = 'Hello World'
    print(demo[0]) #輸出 H
    print(demo[5]) #輸出空格字符串
    print(demo[-1]) #輸出 d
    #思考可不可以索引是-0
    
    函數(shù)中使用索引,有一些函數(shù)的返回值為字符串,有的返回其他的序列,我們可以在函數(shù)調(diào)用之后使用[]來(lái)對(duì)返回序列的元素值進(jìn)行索引
    In [6]: input("請(qǐng)輸入:")[1]
    請(qǐng)輸入:123
    Out[6]: '2'
    

三、切片

  1. 定義
    切片也叫分片,即提取一個(gè)范圍內(nèi)的序列
  2. 語(yǔ)法格式
    序列名(或字符串字面值)[beg_index:end_index,step] 
    
  3. 說(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ù),表示從右向左提取元素
  4. 注意事項(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ù)。
  5. 示例代碼
    1、同時(shí)忽略兩個(gè)索引,整個(gè)序列都成為分片了
    cele = "you can you up ,no can no bb ^_^"
    print(cele[:]) #輸出 全部
    
    2、開始索引,結(jié)束索引默認(rèn),步長(zhǎng)默認(rèn),從包含的開始索引截取至末尾
    print(cele[1:]) 
    
    3、開始索引為負(fù)數(shù),結(jié)束索引默認(rèn),步長(zhǎng)默認(rèn),從右邊開始截取至末尾
    print(cele[-1:]) 
    
    4、結(jié)束索引,開始索引忽略,步長(zhǎng)默認(rèn),截取0至結(jié)束索引
    print(cele[:5]) 
    
    5、結(jié)束索引為負(fù)數(shù),開始索引忽略,步長(zhǎng)默認(rèn),截取0至右邊結(jié)束索引
    print(cele[:-3])
    
    6、開始索引比結(jié)束索引的元素在序列中出現(xiàn)得晚時(shí),切片為空序列
    print(cele[-3:1])
    
    7、步長(zhǎng)為2,截取開始索引到結(jié)束索引
    print(cele[0:10:2])
    
    8、左索引比右索引的元素在序列中出現(xiàn)得晚時(shí)
    print(cele[::-1]) #反置
    
  6. 總結(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ī)則取值

四、序列相乘

  1. 說(shuō)明
    用數(shù)字x乘以一個(gè)序列會(huì)產(chǎn)生新的序列,在新的序列中,原來(lái)的序列將被重復(fù)x次
  2. 示例代碼
    i = '1' * 5
    print(type(i))
    print(i)
    

五、序列相加

  1. 說(shuō)明
    兩個(gè)序列相加返回一個(gè)新的序列
  2. 示例代碼
    seq1 = 'Hello'
    seq2 = 'World'
    seq3 = seq1 + seq2
    print(seq3)
    

六、使用None創(chuàng)建空序列

  1. 示例代碼
    sequence = 10 * [None]
    sequence
    [None, None, None, None, None, None, None, None, None, None]
    

七、是否包含

  1. 說(shuō)明
    指某值是否在序列中,使用in運(yùn)算符,運(yùn)算符結(jié)果為布爾值True 或者 False
  2. 語(yǔ)法格式
    '某值' in 序列
    
  3. 示例代碼
    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)度

  1. 內(nèi)置函數(shù)
    len(序列)
    
  2. 示例代碼
    cele = "you can you up ,no can no bb ^_^"
    print(len(cele)) #32
    

九、最小值

  1. 內(nèi)置函數(shù)
    min(序列)
    
  2. 示例代碼
    #純數(shù)字
    numbers = "123456789"
    print(min(numbers)) #1
    #純字母
    letter = "abcdef"
    #字母加數(shù)字
    letter = "abcdef123"
    print(min(letter)) #1
    #中文 底層比較是Unicode編碼 
    letter = "時(shí)間在哪里,成就就在哪里"   
    print(min(letter)) #輸出  ,(\u002c)
    

十、最大值

  1. 內(nèi)置函數(shù)
    max(序列)
    
  2. 示例代碼
    #純數(shù)字
    numbers = "123456789"
    print(max(numbers)) #9
    #純字母
    letter = "abcdef"
    #字母加數(shù)字
    letter = "abcdef123"
    print(max(letter)) #f
    #中文 底層比較是Unicode編碼 
    letter = "時(shí)間在哪里,成就就在哪里"   
    print(max(letter)) #輸出  間(\u95f4)
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容