經驗拾憶(純手工)=> Python基本數據類型

數據結構

  1. 可變類型與不可變類型(重頭戲)python

    基操:
           可變類型:[], {}                # 可增刪改 查
           不可變類型: int float str ()    # 沒法增刪改, 只可查
    
       升操: + 與 += 的區別:
           也許不少人會說 + 和 += 是徹底等價的,或者知道區別,但也說不出個因此然
           看我操做:(忽略Python小整數池的內存固定分配問題)
               +: 
                   不管是可變類型 仍是 不可變類型, 都是新指向的空間
               +=: 
                   對於可變類型:原地操做,原指向,原空間
                   對於不可變類型:異地操做,新指向,新空間
                   
    
           我這裏故意搞你一下思緒:見過 a=+1 麼,能夠運行試試。
           不要疑惑,告訴你答案:這個+1 表明 正負號的 正1。 雖然一點技術含量沒有,可是你要懂
  2. 序列git

    也許叫可迭代對象更爲合適,可是我喜歡叫序列。
       我認知的序列包括 [], {}, ()   # 請記住這個序列,數據處理最爲重要
       此外說明一下:
           1. 個人代碼大多都是Ipython運行完貼上去的, 因此你看見的out格式就表明print了,要懂~
           2. 所寫的大多都是實際經驗中經常使用的 或者 冷門可是好用的
           3. 列出的函數API有的嫌棄麻煩沒有寫參數,你要懂,(我這裏沒有顧及0入門的小白,諒解)
  3. 元祖數據結構

    基操:
           元祖屬於不可變類型,不能增刪改,因此函數少的可憐
           我用help查了一下,只有下面這2個函數。。。。。。
           a = (1,2,3)
           count() # 統計元素個數
           index() # 查找元素,並返回位置
       升操:
           a = (1)  # 哥們注意,這不是元祖,這是 整形1 .....
           a = (1,) # 這纔是元祖,單元素元祖須要加逗號,記住便可,沒必要糾結
  4. 經常使用字符串操做:app

    基操:
           a = ' 你2好 '
           a.find('你')  # 搜索目標字符串,找到 則 返回索引,找不到 則 返回-1 (推薦使用)
           a.split(2)    # 注意:不給參數,默認按全部 空白符 切割
           a.strip()  
       升操: 
           1. string庫的靈活使用
               In [1]: import string
               In [2]: string.digits
               Out[2]: '0123456789'
               
               In [8]: string.ascii_letters
               Out[8]: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'           
                 
               In [9]: string.ascii_lowercase
               Out[9]: 'abcdefghijklmnopqrstuvwxyz'
               
               In [10]: string.ascii_uppercase
               Out[10]: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
               
               In [12]: string.punctuation
               Out[12]: '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
               
           2. python3.6 - f模板字符串
               新語法引出來,只爲刷三觀,具體本身去學
               學過ES6可能會很熟悉 -> 其實就是模板字符串 (ES6和python語法真的很像)
               In [15]: name = '張三'     
               In [16]: f'名字:{name}'
               Out[16]: '名字:張三'
               
               若是你想學習更多f原語,請參考這位老哥->
               https://blog.csdn.net/sunxb10/article/details/81036693
  5. 經常使用列表操做:函數

    a = [4,3,2,1]
       基操:
           a.extend() # 參數若是是序列,則把這個序列解開,一個一個插入
           a.append() # 參數寫什麼,插入的就是什麼
       升操:
           a[::] # 開闢空間 複製列表
           a.sort(key=)   # 記住這個key,能夠寫函數名 (後面也會寫高階函數的文章)
  6. 經常使用字典操做:學習

    基操:
           a = {1:2}
           a.update({key:value})   # 有則更新,無則添加(Key-Value算一個總體)
           a.setdefault(key, value) # 有此Key則不變 並返回value,無則插入key,value並返回None
           a.keys()     # 返回全部 key (注意:返回值能夠理解爲 集合對象)
           a.values()   # 返回全部 value (同上,返回值可理解爲 集合對象)
           a.items()    # 返回全部 鍵值對 (同上,返回值可理解爲 集合對象)
       升操:
           1. Key是字典做爲序列的默認首選項
               解釋對列表、元祖等序列等一系列操做若是應用在 字典上 就會只操做 Key
           2. 雙層序列 和 字典 轉換:
               seq2dict: dict( ((1,2),(3,4)) )
               dict2seq: tuple( {1:2,3:4}.items() )
  7. 經常使用集合操做:.net

    大前提: 集合=無序=去重
       基操:add | pop | remove | update 和 & | - ^
       升操:(集合的初始化方式的差別)
           In [57]: s1 = set('abcd') # 理解方式: 此初始化方式 會先遍歷 整個 字符串
           In [58]: s1
           Out[58]: {'a', 'b', 'c', 'd'}
           
           In [59]: s2 = {'abcd'}   # 理解方式: 此初始化方法把 整個 字符串當作集合的 一個 元素
           In [60]: s2
           Out[60]: {'abcd'}
相關文章
相關標籤/搜索