前言
參考資料:
- 《Python編程:從入門到實戰》;
- MOOC慕課北理的嵩天教授的Python課程;
結合語法基礎:
本篇會實時更新,學到啥模塊就更新啥模塊的方法。重點放在常用函數、方法的總結,類似Java里API。主要起“字典”的作用,即忘了有啥方法才來查,因此做了些減法。結合Python語法基礎來看可能效果會好一些;
1. 運算相關
x,y,z為某個數字;list為列表
abs(x):求x的絕對值;divmod(x, y):商余,同時輸出商和余數,divmod(10, 3) ---> (3, 1);pow(x, y):冪運算,x**y;pow(x, y, z):冪余,(x**y)%z;round(x):四舍五入,不保留小數;round(x, d):四舍五入,保留d位小數;min(list):獲取數字列表中的最小值;max(list):獲取數字列表中的最大值;sum(list):獲取數字列表中的總和;int(x):將x取整,攝取小數部分;float(x):將x變成浮點數,增加小數部分;complex(x):將x變成復數,增加虛數部分;
2. Sring與數字
string為某個字符串;num為某個數字;firstNum為第一個數字;lastNum為最后一個數字;step為步長;u為unicode編碼字符;old為老的子串;new為新的子串;sep為分隔的子串規則;fillchar為填充的字符;chars為字符;
字符串的操作方法:
string.title():讓每個單詞的首字母都改成大寫;string.lower():字符串全字符小寫;string.upper():字符串全字符大寫;string.replace(old, new):所有old的子串被new子串替換;string.center(num):根據寬度num將字符串居中;string.center(num, fillchar):根據寬度num將字符串居中,其余字符使用fillchar填充;string.rstrip():刪去字符串末尾的空白;string.lstrip():刪去字符串開頭的空白;string.strip():同時刪去字符串兩端空白;string.strip(chars):刪去字符串兩邊出現的字符chars;new.join(string):在string變量中除最后元素外每個元素后增加一個new子串;
字符串的獲取功能:
string.count('xxx'):獲取xxx在string中出現的次數;string.split():以空格為分隔符將字符串拆分成多個部分,並儲存在一個列表里;string.split(sep):返回列表,根據sep將字符串分隔;len(string):獲取字符串的長度;chr(u):返回u編碼的字符x;ord(x):獲取x的Unicode編碼;
其他類型轉字符串的方法:
str(num):將數字num轉換成字符串;hex(num):將數字num轉成十六進制字符串;oct(num):將數字num轉成八進制字符串;
字符串切片(同列表切片):
string[firstNum: lastNum: step]:根據步長對字符串切片;string[::-1]:倒轉字符串;
字符串的格式化:
"{} {}".format("hello", "world"):不設置指定位置,按默認順序輸出 hello world;"{1} {0} {1}".format("hello", "world"):設置指定位置,輸出 world hello world;- format函數傳入對象:
class AssignValue(object): def __init__(self, value): self.value = value my_value = AssignValue(6) print('value 為: {0.value}'.format(my_value)) # "0" 是可選的
數字的格式化:
{字符串模板}.format(用逗號分隔的字符串參數):使用字符串模板格式化字符串參數;- format格式化函數的字符串模板,如下圖所示:

- 數字格式化示例:

字符串反轉函數:
def rvs(s):
if s == "" :
return s
else :
return rvs(s[1:])+s[0]
3. 列表相關
list為某個列表;object為列表中的某個元素;index為列表的索引;firstNum為第一個數字;lastNum為最后一個數字;num為某個數字;
創建列表的示例:
bicycles = [ 'trek', 'cannondale', 'redline']list= []:創建空列表;
數字列表的創建與操作功能:
range(firstNum, lastNum):生成一系列數字,包含firstNum,不包含lastNum。通常在遍歷時使用,如for num in range(1, 5):;range(firstNum, lastNum, step):指定步長生成一系列數字,包含firstNum,不包含lastNum,步長為step;list(range(firstNum, lastNum)):生成數字列表,包含firstNum,不包含lastNum;list = [num**2 for num in range(1s, 11)]:使用列表解析生成數字列表;min(list):獲取數字列表中的最小值;max(list):獲取數字列表中的最大值;sum(list):獲取數字列表中的總和;
列表的增刪功能:
list.append(object):將object元素添加到列表末尾;list.insert(index, object):將object元素添加到列表任意位置,需要指定索引index;del list[index]:刪除list列表里指定索引index的元素;list.pop():彈出列表末尾元素;list.pop(index):彈出列表中指定索引index的元素;list.remove(object):將列表中元素object刪除,只刪除第一個指定的值;list.clear():刪除列表所有元素;
列表的操作功能:
list.sort():根據首字母對列表進行排序,永久性修改;list.sort(reverse = True):按字母順序相反的順序排列列表元素,永久性修改;sorted(list):根據首字母對列表進行排序,臨時性修改;sorted(list, reverse=True):按字母順序相反的順序排列列表元素,臨時性修改;list.reverse():反轉列表排列順序;tuple(list):將列表類型轉變為元祖類型,實現數據保護;list1[i: j: k] = list2:用列表list2替換list1切片后說對應元素子列表;list *= n:將列表list重復n次,並更新;
列表的獲取功能:
len(list):獲取list列表的長度;list[firstNum: lastNum]:切片,獲取索引為firstNum到lastNum-1的元素組成新列表(可用於遍歷部分列表、復制列表);list[: lastNum]:切片,獲取從頭開始到lastNum-1的元素組成新列表;list[firstNum:]:切片,獲取索引為firstNum到列表末尾的元素組成新列表(當first為負數時,為倒數幾個);list.copy():生成新列表,復制list中所有元素;
4. 集合相關
S、T為集合;x為集合中的元素
集合的操作符:
S | T:並集,所有元素;S - T:差集;S & T:交集,同時包含;S ^ T:補集,非相同元素;S <= T 或 S < T:判斷S和T的子集關系;S >= T 或 S > T:判斷S和T的包含關系;S |= T:並集;S -= T:差集;S &= T:交集;S ^= T:補集;
集合的處理方法:
S.add(x):若S中無x,則將x加入S;S.discard(x):移除元素x,若x不在S中,不報錯;S.remove(x):移除元素x,若x不在S中,產生KeyError異常;S.clear():移除所有元素;S.pop():隨機返回一個元素,並更新S,若S為空則產生KeyError異常;S.copy():返回集合S的一個副本;len(S):返回集合S的元素個數;x in S:判斷x是否在S中;x not in S:判斷x是否不在S中;set(x):將其他類型變量轉變為集合類型;
5. 序列化類型
序列是一個基類類型,由字符串、元祖、列表構成。x為元素;S、T為序列;n為數字;i、j為索引;k為步長;
序列化通用操作符:
x in S:判斷x是否在S中;x not in S:判斷x是否不在S中;S + T:連接兩個序列;S*n:將序列S復制n次;S[i]:返回第i個元素;S[i: j]:切片,含i不含j;S[i: j: k]:切片,以k為步長,含i不含j;len(S):返回序列S的長度,即元素個數;min(S):返回序列中的最小值;max(S):返回序列中的最大值;S.index(x):返回序列S第一次出現x的位置;S.index(x, i, j):返回序列S從i到j第一次出現x的位置;S.count(x):返回序列S中出現x的總次數;
6. 字典相關
map為某個字典;key為鍵;value為值;
創建字典的示例:
alien0 = {'color': 'green', 'points': 5}map = {}:創建空字典;- 由類似對象組成字典,如下:
favorite_languages = { 'jen': 'python', 'sarah': 'ruby', 'edward': 'ruby', 'phil': 'python', }
字典的獲取功能:
map[key]:根據key獲取value,如果key為字符串需要用引號標識;map.items():返回字典中所有鍵值對的信息。可用於用於map字典的遍歷,如:for key, value in map.items():map.keys():返回字典中所有鍵的信息。可用於遍歷map字典的鍵,如:for object in map.keys():map.values():返回字典中所有值的信息。可用於遍歷map字典的值,如:for object in map.values():set(map.values()):遍歷map字典的值,剔除重復項;map.get(key, <default>):若鍵存在,則返回相應值,不存在則返回<default>值;map.pop(key, <default>):若鍵存在,則返回相應值,不存在則返回<default>值;map.popitem():隨機從字典map中取出一個鍵值對,以元祖形式返回;len(map):獲取map中的元素個數;
字典的操作功能:
map[key] = value:給map字典新增一對鍵值對 / 或修改某鍵的值;del map[key]:刪除map字典中鍵]為key的鍵值對;map.clear():刪除所有的鍵值對;
字典的判斷功能:
key in map:判斷鍵key是否在字典map中;
7. 輸入輸出
content作為變量儲存用戶輸入;message為提示用戶的信息,將打印在控制台;
content = input("mesage"):獲取用戶輸入內容(在Python 2.7里使用raw_input()函數);print(content):將content打印輸出到控制台;
8. 文件相關
xxx.txt是一個txt文件;file_object為文件對象;
打開文件的示例:
with open('xxx.txt') as file_object:
contents = file_object.read()
print(contents)
open('xxx.txt'):以只讀方式打開文件,操作文件的前置工作。待操作文件需要與程序在同一目錄下,或者使用相對路徑 \ ;open('xxx.txt', 'w'):以寫入方式打開文件,不換行。其他參數還有r讀取、a附加、r+讀寫;close('xxx.txt'):關閉文件;file_object.read():讀取文件;file_object.readlines():將文件各行存儲在一個列表里;
9. json模塊
content是要操作的內容;file_object是文件對象;json是模塊名
json.dump(content, file_object):將content內容存入文件對象;json.load(file_object):將文件對象里的內容加載;
10. unittest測試模塊
self是Python的關鍵字,用於方法中;a為程序員編寫方法的運行結果;b為該函數的預期結果;
unittest.TestCase:unittest模塊里的測試類,所有測試類都要繼承TestCase類;unittest.main():讓Python運行文件中的測試;setUp(self):構建前置條件的方法,在一個測試類中只執行一次;
常用的斷言方法:
self.assertEqual(a, b):核實 a == b;self.assertNotEqual(a, b):核實 a != b;self.assertTrue(a):核實a為 True;self.assertFalse(a):核實a為 False;self.assertIn(item, list):核實item在list中;self.assertNotIn(item, list):核實item不在list中;
11. time模塊
formatStr為格式化控制符組成的字符串;timeStr為具有某種格式的時間字符串;second為數字,表示秒;
時間獲取:
time():獲取當前時間戳,即計算機內部時間值,返回浮點數;ctime():獲取當前時間並以易讀方式表示,返回字符串;gmtime():獲取當前時間,表示為計算機可處理的時間格式;
格式化控制符:
| 格式化字符串 | 日期/時間說明 | 值范圍 |
|---|---|---|
| %Y | 年份 | 0000~9999,如:2021 |
| %m | 月份 | 01~12,如:0 |
| %B | 月份名稱 | January~December,如:April |
| %b | 月份名稱縮寫 | Jan~Dec,如:Apr |
| %d | 日期 | 01~31,如:21 |
| %A | 星期 | Monday~Sunday,如:Wednesday |
| %a | 星期縮寫 | Mon~Sun,如:Wed |
| %H | 小時(24h制) | 00~23,如:12 |
| %l | 小時(12h制) | 01~12,如:7 |
| %p | 上/下午 | AM,PM |
| %M | 分鍾 | 00~59 |
| %S | 秒 | 00~59 |
時間格式化:
strftime(formatStr, time.gmtime()):定義輸出效果timeStr,將計算機可處理的時間以特定格式返回;strptime(timeStr, formatStr):定義輸入效果,將特定格式的時間轉換成計算機可處理的時間格式;
程序計時:
perf_counter():返回CPU級別的精確事件計數值,單位秒;sleep(second):程序休眠second秒,可以是浮點數;
12. random模塊
a、b為數字;k為數字,表示步長;seq表示序列
基本隨機數函數:
seed(a):初始化給定隨機數種子,默認為當前系統時間。產生種子a對應的序列;random():生成一個[0.0 , 1.0)之間的隨機小數;
擴展隨機數函數:
randint(a, b):生成一個[a , b]之間的整數;randrange(a, b):生成一個[a, b)之間的隨機整數;randrange(a, b, k):生成一個[a, b)之間以k為步長的隨機整數;getrandbits(a):生成一個a比特的隨機整數;uniform(a, b):生成一個[a, b]之間的隨機小數;choice(seq):從序列seq中堆積選擇一個元素;shuffle(seq):將序列seq中的元素隨機排列,返回打亂后的序列;
13. jieba模塊
jieba庫是一個優秀的中文分詞第三方庫。string為一串中文字符串;
lcut(string):精確模式,返回一個列表類型的分詞結果(中國, 是, 一個, 偉大, 的, 國家);lcut(string, cut_all=True):全模式,返回一個列表類型的分詞結果,存在冗余(中國, 國是, 一個, 偉大, 的, 國家);lcut_for_search(string):搜索引擎模式,返回一個列表類型的分詞結果,存在冗余(中華, 華人, 人民, 共和, 共和國, 中華人民共和國, 是, 偉大, 的);add_word(string):向分詞詞典增加新詞string;
最后
