1. 程式人生 > 實用技巧 >第七天

第七天

今日內容

列表(list):

  ======================================基本使用======================================
  1、用途:多個裝備,多個愛好,多門課程,多個女朋友等

  2、定義方式::[]內可以有多個任意型別的值,逗號分隔   例:x = ["xxx","yyy",111]
     資料轉換方式:x = list("xxx")

  3、常用操作+內建的方法:
        優先掌握的操作:
        1、按索引存取值(正向存取+反向存取):即可存也可以取     
              x = ["xxx","yyy",111]
              print(x[0]) 正向取    print(x[-1])   反向取
              ps:可以改變列表內索引對應的值,如果索引不在列表內也不能用變數來增加

        2、切片(顧頭不顧尾,步長)
              x[起始位置:結束位置:步長]      用法與字串一樣

        3、長度
              print(len(x))                      檢視列表內有多少個元素

        4、成員運算in和not in
              print("xxx" in x)                   判斷指定字串是否在列表中

        5、追加(append、insert)
              x.append(新增的值)                  總是在列表最後一位新增
              x.insert(索引,新增的值)             可以指定索引位置新增
  
        6、刪除(del、remove、pop)
              del x[索引]                          指定索引刪除,不指定索引會將整個列表刪除,索引不存在將報錯,無返回值
              x.remove("指定字串")                指定字串刪除,字串不在列表內將報錯,無返回值 
              x.pop(索引)                           指定索引刪除,不指定索引會刪除最後一位元素,索引不存在將報錯,有返回值

        7、迴圈(可配合for迴圈使用)
              for l in x:
                    print(l)                        會將列表中的每個元素取出來
        需要掌握的操作:
        1、拷貝(copy)
              new_x = x.copy()                      原理:new_x = x[:]          !:淺拷貝

        2、查詢(index)
              x.index(33)                            查詢括號內元素是否在列表中,不在會報錯

        3、統計指定元素的個數(count)
              print(x.count(33))                     計算列表中有幾個指定元素
  
        4、清空整個列表(clear)
              print(l.clear())                       清空整個列表,會留一個無值的空列表

        5、追加寫(extend)
              x.extend("hello")
              print(l)                               在原列表中追加寫一個可迭代(能被for迴圈)的元素

        6、倒序(reverse)
              x.reverse()
              print(x)                               將整個列表倒過來

        7、排序(sort)
              l = [11,-3,9,7,20,99,74]
              l.sort()
              print(l)                                從小到大排序
              l.sort(reverse=True)
              print(l)                                從大到小排序

  ======================================該型別總結====================================
  存多個值

  有序

  可變:值變,id不變。可變==不可hash

瞭解:深、淺拷貝

淺拷貝:只拷貝了第一層索引對應的記憶體地址,第一層中不可變型別改變,新舊列表之間不受影響

如果第一層中可變型別改變,新舊列表中的值會同時改變

深拷貝:拷貝了每一層的索引對應的記憶體地址,每一層中不可變型別改變,新舊列表之間不受影響

每一層中可變型別改變,新舊列表中的值不會同時改變

元祖(tuple):

  ======================================基本使用======================================
  1、用途:存多個值,對比列表來說,元組不可變(是可以當做字典的key的),主要是用來讀

  2、定義方式:與列表型別比,只不過[]換成()
              age=(11,22,33,44,55)本質age=tuple((11,22,33,44,55))

  3、常用操作+內建的方法:
        優先掌握的操作:
        1、按索引取值(正向取+反向取):只能取   
              print(x[0])                  可以按照索引取值

        2、切片(顧頭不顧尾,步長):
              print(x[起始索引:結束索引:步長]

        3、長度
              print(len(x))                計算元組內有多少個元素

        4、成員運算in和not in
              print("xxx" in x)            判斷指定字串是否在元祖中

        5、迴圈(可配合for迴圈使用)
          
        需要掌握的操作:
        1、按索引查詢(index)
              print(x.index(11))           查詢指定元素在元祖中的索引,不存在則報錯

        2、統計指定元素的個數(count)
              print(x.count(22))           查詢指定元素在元祖中的個數
        ========================================================================
        x = (11,22,[33,44])
        x[0] = 22                          元祖內不可變元素值不能改變
        x[2][0] = 11
        print(x)                           元祖中可變元素,只能改變
        原理:元祖內都是索引和對應的記憶體地址,只要索引和記憶體地址不改變,值就可以改變
  ======================================該型別總結====================================
  存一個值

  有序

  不可變:值變,id就變。不可變==可hash

字典(dict):

  ======================================基本使用======================================
  1、用途:存多個值,key-value存取,取值速度快

  2、定義方式:key必須是不可變型別,value可以是任意型別
              info={'name':'egon','age':18,'sex':'male'}      本質info=dict({....})
              或
              info=dict(name='egon',age=18,sex='male')
              或
              info=dict([['name','egon'],('age',18)])
              或
              {}.fromkeys(('name','age','sex'),None)


  3、常用操作+內建的方法:
        優先掌握的操作:
        1、按key存取值:可存可取:
              x = {"k1":111,"k2":222}
              print(x["k1"])                        按key來取值

              x["k3] = 333          
              print(x)                              如果key值不在字典內則增加一組,如果key值在字典中則改變字典中key對應的值

        2、長度len:
              len(x)                                計算字典中有多少組key:value

        3、成員運算in和not in
              print("k3" in x)                      判斷是否在字典內的key值中

        4、刪除
              del x["k1"]                           指定key值刪除所相對應的值
              res = x.pop("k1")                     指定key值刪除所相對應的值,有返回值
              res = x.popitem()                     隨機刪除字典內一組key,value值,有返回值

        5、鍵keys(),值values(),鍵值對items()
              x = {"k1":111,"k2":222}
              print(x.keys())                        顯示列表中所有key值
              print(x.values())                      顯示列表中所有values值
              print(x.items())                       顯示列表中所有key:values值

        6、迴圈
              可以被for迴圈使用
  ======================================該型別總結====================================
  存多個值

  無序

  key必須是不可變型別,value可以是任意型別