前言
參考資料:
- 《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;