摘要:不要疑惑,告訴你答案這個代表正負號的正。雖然一點技術含量沒有,但是你要懂序列也許叫可迭代對象更為合適,但是我喜歡叫序列。
數(shù)據(jù)結構 可變類型與不可變類型(重頭戲)
基操: 可變類型:[], {} # 可增刪改 查 不可變類型: int float str () # 無法增刪改, 只可查 升操: + 與 += 的區(qū)別: 也許很多人會說 + 和 += 是完全等價的,或者知道區(qū)別,但也說不出個所以然 看我操作:(忽略Python小整數(shù)池的內(nèi)存固定分配問題) +: 無論是可變類型 還是 不可變類型, 都是新指向的空間 +=: 對于可變類型:原地操作,原指向,原空間 對于不可變類型:異地操作,新指向,新空間 我這里故意搞你一下思緒:見過 a=+1 么,可以運行試試。 不要疑惑,告訴你答案:這個+1 代表 正負號的 正1。 雖然一點技術含量沒有,但是你要懂序列
也許叫可迭代對象更為合適,但是我喜歡叫序列。 我認知的序列包括 [], {}, () # 請記住這個序列,數(shù)據(jù)處理最為重要 此外說明一下: 1. 我的代碼大多都是Ipython運行完貼上去的, 所以你看見的out格式就代表print了,要懂~ 2. 所寫的大多都是實際經(jīng)驗中常用的 或者 冷門但是好用的 3. 列出的函數(shù)API有的嫌棄麻煩沒有寫參數(shù),你要懂,(我這里沒有顧及0入門的小白,諒解)元祖
基操: 元祖屬于不可變類型,不能增刪改,所以函數(shù)少的可憐 我用help查了一下,只有下面這2個函數(shù)。。。。。。 a = (1,2,3) count() # 統(tǒng)計元素個數(shù) index() # 查找元素,并返回位置 升操: a = (1) # 哥們注意,這不是元祖,這是 整形1 ..... a = (1,) # 這才是元祖,單元素元祖需要加逗號,記住即可,不必糾結常用字符串操作:
基操: a = " 你2好 " a.find("你") # 搜索目標字符串,找到 則 返回索引,找不到 則 返回-1 (推薦使用) a.split(2) # 注意:不給參數(shù),默認按所有 空白符 切割 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() # 參數(shù)如果是序列,則把這個序列解開,一個一個插入 a.append() # 參數(shù)寫什么,插入的就是什么 升操: a[::] # 開辟空間 復制列表 a.sort(key=) # 記住這個key,可以寫函數(shù)名 (后面也會寫高階函數(shù)的文章)常用字典操作:
基操: 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() )常用集合操作:
大前提: 集合=無序=去重 基操: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"}
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/43836.html
摘要:解釋就相當于把每個序列元素的每一個單獨用一個管道函數(shù)處理,再把他們按順序組合成一個新可迭代對象注意這個管道函數(shù)只能是單參數(shù)函數(shù),如果想傳遞多個參數(shù)怎么辦使用偏函數(shù)怕有些人看不懂,這里就不用了,而是用普通函數(shù)定義方式固定值固定值固定值固定值固 map In [25]: list(map(lambda a:a**2, [1,2,3,4])) Out[25]: [1, 4, 9, 16] 解...
摘要:多線程對于爬蟲方面也可以表現(xiàn)出較好的性能。計算密集型就別想多線程了,一律多進程。所以同一時刻最大的并行線程數(shù)進程數(shù)的核數(shù)這條我的個人理解很模糊,參考吧多線程多線程有種通過的那種方式,非常普遍,此處就不寫了。 GIL的理解 GIL這個話題至今也是個爭議較多的,對于不用應用場景對線程的需求也就不同,說下我聽過的優(yōu)點: 1. 我沒有用過其他語言的多線程,所以無法比較什么,但是對于I/O而言,...
摘要:也就是給原函數(shù)加個外殼。類裝飾填充了啊我是原函數(shù)類裝飾填充了啊我是原函數(shù)說明后面關于類的裝飾器如果理解困難當做了解即可,用的也少。 可迭代對象、生成器、迭代器三者的關系 1. 迭代器一定是可迭代對象 2. 生成器是迭代器的一種 3. 可迭代對象:必須實現(xiàn) __iter__方法 4. 迭代器:必須實現(xiàn) __iter__方法 和 __next__ 方法 5. 生成器:必須實現(xiàn) __it...
摘要:類的繼承類繼承有三種調(diào)用方式,其實是有區(qū)別的,聽我慢慢道來第一種父類方法參數(shù)直接調(diào)用第二種方法參數(shù)直接調(diào)用在誰的類下調(diào)用,就找此類對應的下一個就是要繼承的第三種方法參數(shù)找類名對應的的下一個,就是繼承的,一般寫本身的類名上下文管理器上下文管理 類的繼承 類繼承有三種調(diào)用方式,其實是 有區(qū)別 的,聽我慢慢道來 class A: def say(self, name): ...
閱讀 2535·2023-04-26 02:57
閱讀 1417·2023-04-25 21:40
閱讀 2188·2021-11-24 09:39
閱讀 3568·2021-08-30 09:49
閱讀 772·2019-08-30 15:54
閱讀 1178·2019-08-30 15:52
閱讀 2092·2019-08-30 15:44
閱讀 1282·2019-08-28 18:27