首頁 > 軟體

python 列表的查詢操作和切片

2022-01-15 13:01:16

1.列表

  • 列表是python內建的資料結構(列表、元組、字典、集合),相當於陣列
  • 列表中所有資料都是按順序有序排列,列表屬於序列型別
  • 列表中的所有資料都有正數和負數的索引,通過指定的索引總能對映到唯一確定的資料
  • 列表中可以存在重複的資料(區分set)
  • 列表中可以儲存任何型別的資料,多種型別的資料可以混合儲存在一個列表中
  • 列表可以根據需要動態地伸縮,系統會根據需要動態地分配和回收記憶體,使用前無須預先宣告列表的容量

2.列表的建立[]或list()

  • 用中括號[]建立列表,變數名不要取名為list或l,list是列表對應的類名,l容易被誤認為數位1
  • 呼叫內建函數list()(類list的構造方法)
L = [] # 建立空列表
L = [1,2,3,4,5,'python']
print(L) # [1, 2, 3, 4, 5, 'python']
list(rang(1, 5)) # 傳入range物件 [1,2,3,4]
list([1,2,3,4,5,'python']) # 直接傳入中括號[]
list() # 建立空列表

3.定位列表中的元素L[0]

使用索引獲得列表的元素,如果指定的索引在列表中不存在,丟擲錯誤IndexError: list index out of range

4.查詢列表中元素索引L.index()

  • 第一個元素索引是0,後續元素依次+1
  • 最後一個元素索引是-1,前面元素依次-1

L = ['H','e','l','l','o'] # 定義列表,元素可以為數值,但怕給索引搞混了用了字元
L.index('e')
L.index('l')
L.index('h') # value error
L.index('l',2) # 從索引2開始找'l'
L.index('l',2,5) # 在[2, 4]內找'l'
  • 獲得列表中指定元素的索引呼叫方法index,只返回大於0的數值,比如L.index(‘e’) = 1,如列表中存在多個指定元素,方法index只返回第一個指定元素的索引值,比如L.index(‘l’) = 2,如果列表中不存在指定元素,丟擲錯誤ValueError: ‘h’ is not in list
  • 呼叫方法index時還可以指定起始索引start和結束索引stop兩個引數,在一定範圍內查詢元素 (不包含索引stop處值)

5.列表的切片操作L[start:stop:step]

  • 切片的語法格式 [start:stop:step]
  • 得到的切片依然是列表,是原始列表的片段的一份拷貝
  • 得到的切片不包括索引stop對應的元素
  • 步長step預設值為1,這時可以簡化為[start:stop]
  • 當step為正數時
  1. 如果不指定start,切片的第一個元素預設是列表是第一個元素
  2. 如果不指定stop,切片的最後一個元素預設是列表的最後一個元素
  3. 從索引start開始往後計算切片
  • step為負數時
  1. 如果不指定start,切片的第一個元素預設為列表的最後一個元素
  2. 如果不指定stop,切片的最後一個元素預設是列表的第一個元素
  3. 從索引start開始往前計算切片

L = list('HelloWorld')
L[1:7:2]
L[1:6]
L[:] # 返回整個列表 輸入L[]報錯SyntaxError: invalid syntax
L[::-1] # 翻轉整個列表
L[:-1] # stop指定為-1所在元素 ['H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l']
L[6:0:-2]
L[0:6:-2] # start指定為0所在元素,往前看沒有值,返回[]
L[8::-2] # ['l', 'o', 'o', 'l', 'H']
L[8:0:-2] # ['l', 'o', 'o', 'l'] 不包含stop指定的元素
L[-2:0:-2]
L[:3:-2]
  • 切片操作允許索引越界(對比index不允許)
L = list('HelloWorld')
L[:100]
L[-100:]

6.L[slice(start,stop,step)]

  • 可以呼叫內建函數slice(類slice的構造方法)建立slice型別的物件
  • 內建函數slice有三種呼叫方式
  1. slice(stop)
  2. slice(start,stop)
  3. slice(start,stop,step)
  • start、stop和step的預設值都是None
  • slice(start,stop,step)與切片操作中的start:stop:step等價
L = list('HelloWorld')
L[slice(1,9,2)]
L[1:9:2]
L[::]
L[slice(None,None,None)] # L[slice(None)] 返回整個列表
L[1:7]
L[slice(1,7)]
L[:7]
L[slice(7)] #可以只輸入stop,也可寫作 L[slice(None, 7)]

7.in/not in 查詢是否包含某個元素,存在返回True

L = list('HelloWorld')
print(5 in L) # False

到此這篇關於python 列表的查詢操作和切片的文章就介紹到這了,更多相關python 列表的查詢操作和切片內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com