python基礎-列表List及內置方法

數據類型之列表-List

  • 用途:用於存一個或多個不一樣類型的值python

  • 定義:經過中括號存值,每一個值之間經過逗號進行分隔app

    l1 = [1,'a',3,'b']
  • 特性有序可變存多個值的數據類型函數


經常使用方法:

  • 索引取值:正向、反向均可存取值code

    l1 = [1,'a',3,'b',['egon','alex','sean']]
    print(l1[1])      # 打印結果:a
    print(l1[-1])       # 打印結果:['egon', 'alex', 'sean']
  • 索引切片orm

    l1 = [1,'a',3,'b',['egon','alex','sean']]
    print(l1[1:4])      # 獲取索引爲[1-4)之間的元素,不包含索引爲4的元素
    print(l1[2:])       # 獲取索引爲2 以後的元素,包含索引爲2的元素
    print(l1[:3])       # 獲取索引爲3 以前的元素,不包含索引爲3的元素
    print(l1[-2:])      # 獲取索引爲-2 以前的元素,包含索引爲-2 的元素
    print(l1[:-2])      # 獲取索引爲-2 以後的元素,不包含索引爲-2 的元素
  • append對象

    語法:list.append() ,將一個元素增長到列表的最後排序

    l1 = [1,'a',3,'b']
    l1.append(['name','age'])       # 一個列表也是一個元素
    print(l1)                       # 打印結果:[1, 'a', 3, 'b', ['name', 'age']]
  • insert索引

    語法:list.insert() 經過索引,將元素增長到指定位置隊列

    l1 = [1,'a',3]
    l1.insert(1,'b')       # 將'b' 插入到索引爲1 的位置,列表中的其餘元素日後移動
    print(l1)              # 打印結果:[1, 'b', 'a', 3]
  • extendelement

    語法:list.exteng()可迭代對象或集合打散後,新增到列表的最後

    # 將字符串新增到列表中
    l1 = [1,'a',3]
    l1.extend("abc")
    print(l1)         # 打印結果:[1, 'a', 3, 'a', 'b', 'c']
    
    # 將元組新增到列表中
    l1 = [1,'a',3]
    l1.extend((1,3,4))
    print(l1)         # 打印結果:[1, 'a', 3, 1, 3, 4]
    
    # 將字典新增到列表中,只取字典的key值 做爲列表中的元素
    l1 = [1,'a',3]
    l1.extend({'name':'dawn','age':18})
    print(l1)         # 打印結果:[1, 'a', 3, 'name', 'age']
    
    # 將集合新增到列表中
    l1 = [1,'a',3]
    l1.extend({4,5,6})
    print(l1)         # 打印結果:[1, 'a', 3, 4, 5, 6]
  • remove

    語法:list.remove() 經過指定值刪除,不能經過索引刪除,會報錯,存在相同元素時,只會刪除第一個

    l1 = [1, 'a', 3, 4, 5, 6]
    # l1.remove(0)            # 經過索引刪除,報錯
    l1.remove(4)          
    print(l1)             # 打印結果:[1, 'a', 3, 5, 6]
  • pop

    語法:list.pop() 不傳參時,默認從最後開始刪除,不然刪除指定索引元素。返回值爲被刪除的元素,remove() 沒有返回值

    l1 = [1, 'a', 3, 4, 5, 6]
    d1 = l1.pop()
    d2 = l1.pop(1)
    print(d1)         # 打印結果:6
    print(d2)         # 打印結果:a
    print(l1)         # 打印結果:[1, 3, 4, 5]
  • del

    語法:del element 萬能刪除方法

    # del的使用,萬能刪除
    l1 = [1, 2, 3, 4, 5]
    print(f"l1:{l1}")
    del l1[2]
    print(f"刪除後的l1:{l1}")
  • count

    語法:list.count() 統計當前列表內指定元素的個數

    # count():用於統計當前列表內指定元素的個數
    l1 = ['egon', 'alex', 'tank', 'sean', 'a']
    print(f"元素a 出現的次數:{l1.count('a')}")
  • index

    語法:list.index() 獲取當前指定元素的索引值,能夠指定查找範圍(顧頭不顧尾),若是沒有找到,報錯

    # index():獲取當前指定元素的索引值,可指定查找範圍(顧頭不顧尾),若是沒有找到,提示ValueError異常
    l1 = ['egon', 'alex', 'tank', 'sean', 'a']
    print(f"alex在列表中的出現的位置是{l1.index('alex')}")
    print(f"從索引0到2中查找tank出現的位置是:{l1.index('tank',0,3)}")
  • sort

    語法:list.sort() 用於排序,可指定排序的方式,默認排序從小到大,reverse=False

    # sort():排序,在原列表中排序,可指定排序的方式,默認排序爲正序
    l1 = [9, 5, 84, 2, 56, 35, 28]
    l1.sort()
    print("l1默認排序後爲:{list}".format(list=l1))
    l1.sort(reverse=True)
    print("l1的倒序爲:{list}".format(list=l1))
    
    # 字符串的排序方式按照ASCII 碼排序 null < 空格 < 0 < 9 < A < Z < a < z
    l2 = ['1', 'a', 'M', '9', 'c']
    l2.sort()
    print("l2默認排序後爲:{list}".format(list=l2))
    l2.sort(reverse=True)
    print("l2的倒序爲:{list}".format(list=l2))
    # sort() 和sorted() 的區別
    """sort() 和sorted() 的區別
       sort() 是列表List 的內置方法,可用經過類名.方法名調用
       sort() 是在原列表自己排序,操做,排序完後,不記錄原來的位置
       sorted() 是python 級的內置方法,調用sorted() 方法後,會生成一個新的列表,列表原來的順序依然保留
    """
    l1 = [9, 5, 84, 2, 56, 35, 28]
    print("l1使用sort 排序後爲:{list}".format(list=l1.sort()))  # 沒有返回值,打印結果爲:None
    print("l1使用sorted 排序後爲:{list}".format(list=sorted(l1)))  # 返回值爲排序後的列表
    l1.sort()
    print("l1使用sort 排序後爲:{list}".format(list=l1))
  • clear

    語法:list.clear() 清空列表中的元素,返回一個空列表

    # clear():清空列表中的元素,返回一個空列表
    l1 = [9, 5, 84, 2, 56, 35, 28]
    print("l1的內容爲:{list}".format(list=l1))
    print("l1被清空後:{list}".format(list=l1.clear()))

擴展

  1. 隊列:先進先出

    # 隊列:先進先出;
    l1 = []
    l1.append(1)
    l1.append(2)
    l1.append(3)
    print("隊列的實現:")  # 實現隊列:先進先出
    print(l1)
    for i in l1:
        l1.pop(0)
        print(l1)
  2. 棧:先進後出

    棧:先進後出
    l1 = []
    l1.append(1)
    l1.append(2)
    l1.append(3)
    print("棧的實現:")
    print(l1)
    for i in l1:
        l1.pop()
        print(l1)
  3. 拷貝

    至關於賦值操做,list2 = list1 當list1 的內容發生改變時,list2 的值也會相應的發生改變

    list1 = [1,2,3,['a','b']]
    list2 = list1
    print(list1)     # 打印結果:[1,2,3,['a','b']]
    print(list2)     # 打印結果:[1,2,3,['a','b']]
    
    list1.append('e')
    print(list1)     # 打印結果:[1,2,3,['a','b'],'e']
    print(list2)     # 打印結果:[1,2,3,['a','b'],'e']
  4. 淺拷貝

    淺拷貝是copy模塊中的copy()函數list2 = copy.copy(list1) ,當list1 中的非子序列發生改變,list2 不會發生改變,但若是list1 內的子序列發生變化,list2 的對應子序列也會發生改變

    import copy as cy
    list1 = [1,2,3,['a','b']]
    list2 = cy.copy(list1)
    list1.append(4)
    print(list1)
    print(list2)            # list2 沒有發生改變
    
    list1[3].append('e')
    print(list1)
    print(list2)            # list2 子序列中追加了 'e'
  5. 深拷貝

    深拷貝是copy模塊中的deepcopy()函數list2 = copy.deepcopy(list1) ,不管list1 怎麼改變,list2 都不會改變

    import copy as cy
    list1 = [1,2,3,['a','b']]
    list2 = cy.deepcopy(list1)
    list1.append(4)
    print(list1)
    print(list2)            # list2 沒有發生改變
    
    list1[3].append('e')
    print(list1)
    print(list2)            # list2 依然沒有發生改變
相關文章
相關標籤/搜索