可變類型與不可變類型(重頭戲)python
基操: 可變類型:[], {} # 可增刪改 查 不可變類型: int float str () # 沒法增刪改, 只可查 升操: + 與 += 的區別: 也許不少人會說 + 和 += 是徹底等價的,或者知道區別,但也說不出個因此然 看我操做:(忽略Python小整數池的內存固定分配問題) +: 不管是可變類型 仍是 不可變類型, 都是新指向的空間 +=: 對於可變類型:原地操做,原指向,原空間 對於不可變類型:異地操做,新指向,新空間 我這裏故意搞你一下思緒:見過 a=+1 麼,能夠運行試試。 不要疑惑,告訴你答案:這個+1 表明 正負號的 正1。 雖然一點技術含量沒有,可是你要懂
序列git
也許叫可迭代對象更爲合適,可是我喜歡叫序列。 我認知的序列包括 [], {}, () # 請記住這個序列,數據處理最爲重要 此外說明一下: 1. 個人代碼大多都是Ipython運行完貼上去的, 因此你看見的out格式就表明print了,要懂~ 2. 所寫的大多都是實際經驗中經常使用的 或者 冷門可是好用的 3. 列出的函數API有的嫌棄麻煩沒有寫參數,你要懂,(我這裏沒有顧及0入門的小白,諒解)
元祖數據結構
基操: 元祖屬於不可變類型,不能增刪改,因此函數少的可憐 我用help查了一下,只有下面這2個函數。。。。。。 a = (1,2,3) count() # 統計元素個數 index() # 查找元素,並返回位置 升操: a = (1) # 哥們注意,這不是元祖,這是 整形1 ..... a = (1,) # 這纔是元祖,單元素元祖須要加逗號,記住便可,沒必要糾結
經常使用字符串操做: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
經常使用列表操做:函數
a = [4,3,2,1] 基操: a.extend() # 參數若是是序列,則把這個序列解開,一個一個插入 a.append() # 參數寫什麼,插入的就是什麼 升操: a[::] # 開闢空間 複製列表 a.sort(key=) # 記住這個key,能夠寫函數名 (後面也會寫高階函數的文章)
經常使用字典操做:學習
基操: 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() )
經常使用集合操做:.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'}