python內置函數列表(list)


一、列表list

  •  一個隊列,一個排列整齊的隊伍,列表內的個體稱作元素,由若干元素組成的列表,元素可以是任意對象(數字,字符串,對象,列表等)
  •  列表內元素有順序,可以使用索引,線性的數據結構,使用[]表示,列表是可變的
  •  列表list、鏈表、queue、stack的差異

二、列表list定義和初始化

  •  list() 定義一個空列表  list(iterable)  初始化一個可迭代的列表  列表不能一開始就定義大小  
  •  列表定義方式:lst = list()或lst = []    
  • 舉例:  lst = [2,6,9,'ab']  lst = list(range(5))

三、列表索引訪問

  •  索引也叫下標
  •  正索引:從左至右,從0開始為列表中每一個元素編號
  •  負索引:從右至左,從-1開始為列表中每一個元素編號
  •  正負索引不可以越界,否則引發異常IndexError,為了理解方便,可以認為列表是從左至右排列的,左邊是頭部,右邊是尾部,左邊是下界,右邊是上界
  •  列表通過索引訪問方式:list[index],index就是索引,使用中括號訪問


四、列表查詢

1、list.index(value,[start,[stop])

  •  通過值value,從指定區間查找列表內的元素是否匹配,匹配第一個就立即返回索引,匹配不到,拋出異常ValueError
  • 舉例:
  • >>> lst = [2,6,9,'ab']
    >>> lst.index(2)
    0
    >>> lst.index(6,0,3)
    1

2、list.count(value)

  •  返回列表中匹配value的次數
  •  時間復雜度
  •  index和count方法都是O(n)
  •  隨着列表數據規模的增大而效率下降
  •  len(lst) 返回列表元素的個數
  • 舉例:
  • >>> lst = lst = [2,6,9,9,9,'ab']
    >>> lst
    [2, 6, 9, 9, 9, 'ab']
    >>> lst.count(9)
    3

五、列表元素修改

  •  list[index] = value,索引不要超界

 

六、列表增加、插入元素

  •  list.append(object):列表尾部追加元素,返回None,返回None就意味着沒有新的列表產生,就地修改,時間復雜度是O(1)  
  •  list.insert(index,object) 返回None,返回None就意味着沒有新的列表產生,就地修改,時間復雜度是O(1)  
  • 插入索引越界:超越上界,尾部追加,超越下界,頭部追加    list.extend(iterable) 返回None,將可迭代對象元素追加進來,返回None,就地修改  
  •  list+list:連接操作,將兩個列表連接起來,產生新的列表,原列表不變,本質上調用的是__add__()方法
  •  list*list:重復操作,將本列表元素重復n次,返回新的列表

七、列表刪除元素

  •  list.remove(value):返回None,從左至右查找第一個匹配的value值,移除該元素,返回None,就地修改
  •  list.pop([index]):不指定索引就從列表尾部彈出一個元素,指定索引,從索引出彈出一個元素,索引超界拋出IndexError錯誤
  •  list.clear():清除列表所有元素,返回None,剩下一個空列表

八、列表其他操作

  •  list.reversed(): 將列表元素反轉,返回None,就地修改
  •  list.sort(key=None,reverse=False): 對列表元素進行排序,就地修改,默認升序,reverse=True降序,key是一個函數,指定key如何排序
  •  in 是否在 [3,4] in [1,2,[3,4]]

九、列表復制

1、影子拷貝,也叫淺拷貝:list.copy() ,遇到引用類型,只是復制了一個引用而已

  • 測試 lst1 = list(range(4))和 lst2 = list(range(4))是否相等?
  • >>> lst1 = list(range(4))
    >>> lst1
    [0, 1, 2, 3]
    >>> lst2 = list(range(4))
    >>> lst2
    [0, 1, 2, 3]
    >>> lst1 == lst2
    True
  • 以上測試說明,lst1和 lst2相等,兩個列表指向的是同一個引用
  • 測試1:
  • >>> lst1 = list(range(4))
    >>> lst2 = lst1.copy()
    >>> lst1
    [0, 1, 2, 3]
    >>> lst2
    [0, 1, 2, 3]
    >>> lst2[2] = 10
    >>> lst2
    [0, 1, 10, 3]
    >>> lst1
    [0, 1, 2, 3]
    >>> lst1 == lst2
    False

2、深拷貝:copy模塊,提供了deepcopy

  • 舉例1:使用淺拷貝
  • >>> lst1 = [1,[2,3],4]
    >>> lst2 = lst1.copy()
    >>> lst2
    [1, [2, 3], 4]
    >>> lst2[1][1] = 20
    >>> lst2
    [1, [2, 20], 4]
    >>> lst1
    [1, [2, 20], 4]
    >>> lst1 == lst2
    True

     

    舉例 2:使用深拷貝
  • >>> lst1 = [1,[2,3],4]
    >>> lst1
    [1, [2, 3], 4]
    >>> import copy
    >>> lst2 = copy.deepcopy(lst1)
    >>> lst2
    [1, [2, 3], 4]
    >>> lst2[1][1] = 20
    >>> lst2
    [1, [2, 20], 4]
    >>> lst1 == lst2
    False

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM