《Python數據結構與算法分析 第2版》
第 1章 導論 1
1.1本章目標1
1.2入門1
1.3何謂計算機科學1
1.3.1何謂編程3
1.3.2為何學習數據結構及抽像數據類型4
1.3.3為何學習算法4
1.4Python基礎5
1.4.1數據5
1.4.2輸入與輸出16
1.4.3控制結構18
1.4.4異常處理21
1.4.5定義函數23
1.4.6Python面向對像編程:定義類24
1.5小結37
1.6關鍵術語38
1.7討論題38
1.8編程練習38
第2章 算法分析40
2.1本章目標0
2.2何謂算法分析40
2.2.1大O記法43
2.2.2異序詞檢測示例46
2.3Python數據結構的性能49
2.3.1列表49
2.3.2字典53
2.4小結55
2.5關鍵術語55
2.6討論題56
2.7編程練習56
第3章基本數據結構57
3.1本章目標57
3.2何謂線性數據結構57
3.3棧58
3.3.1何謂棧58
3.3.2棧抽像數據類型59
3.3.3用Python實現棧60
3.3.4匹配括號62
3.3.5普通情況:匹配符號64
3.3.6將十進制數轉換成二進制數65
3.3.7前序、中序和後序表達式67
3.4隊列75
3.4.1何謂隊列75
3.4.2隊列抽像數據類型75
3.4.3用Python實現隊列76
3.4.4模擬:傳土豆77
3.4.5模擬:打印任務79
3.5雙端隊列84
3.5.1何謂雙端隊列84
3.5.2雙端隊列抽像數據類型84
3.5.3用Python實現雙端隊列85
3.5.4回文檢測器86
3.6列表88
3.6.1無序列表抽像數據類型88
3.6.2實現無序列表:鏈表89
3.6.3有序列表抽像數據類型97
3.6.4實現有序列表97
3.7小結100
3.8關鍵術語101
3.9討論題101
3.10編程練習102
第4章遞歸105
4.1本章目標105
4.2何謂遞歸105
4.2.1計算一列數之和105
4.2.2遞歸三原則107
4.2.3將整數轉換成任意進制的字符串108
4.3棧幀:實現遞歸110
4.4遞歸可視化111
4.5復雜的遞歸問題116
4.6探索迷宮118
4.7動態規劃123
4.8小結128
4.9關鍵術語129
4.10討論題129
4.11編程練習129
第5章搜索和排序131
5.1本章目標131
5.2搜索131
5.2.1順序搜索131
5.2.2二分搜索134
5.2.3散列136
5.3排序145
5.3.1冒泡排序145
5.3.2選擇排序147
5.3.3插入排序149
5.3.4希爾排序151
5.3.5歸並排序153
5.3.6快速排序156
5.4小結159
5.5關鍵術語160
5.6討論題160
5.7編程練習161
第6章樹163
6.1本章目標163
6.2示例163
6.3術語及定義166
6.4實現168
6.4.1列表之列表168
6.4.2節點與引用171
6.5二叉樹的應用173
6.5.1解析樹173
6.5.2樹的遍歷179
6.6利用二叉堆實現優先級隊列182
6.6.1二叉堆的操作182
6.6.2二叉堆的實現183
6.7二叉搜索樹189
6.7.1搜索樹的操作190
6.7.2搜索樹的實現190
6.7.3搜索樹的分析201
6.8平衡二叉搜索樹202
6.8.1AVL樹的性能203
6.8.2AVL樹的實現204
6.8.3映射實現總結210
6.9小結211
6.10關鍵術語211
6.11討論題211
6.12編程練習213
第7章圖及其算法214
7.1本章目標214
7.2術語及定義215
7.3圖的抽像數據類型216
7.3.1鄰接矩陣216
7.3.2鄰接表217
7.3.3實現218
7.4寬度優先搜索220
7.4.1詞梯問題220
7.4.2構建詞梯圖221
7.4.3實現寬度優先搜索223
7.4.4分析寬度優先搜索226
7.5深度優先搜索226
7.5.1騎士周遊問題226
7.5.2構建騎士周遊圖227
7.5.3實現騎士周遊229
7.5.4分析騎士周遊231
7.5.5通用深度優先搜索233
7.5.6分析深度優先搜索236
7.6拓撲排序236
7.7強238
7.8最短路徑問題241
7.8.1Dijkstra算法243
7.8.2分析Dijkstra算法245
7.8.3Prim算法245
7.9小結248
7.10關鍵術語249
7.11討論題249
7.12編程練習250
第8章附加內容251
8.1本章目標251
8.2復習Python列表251
8.3復習遞歸256
8.3.1同餘定理257
8.3.2冪剩餘257
8.3.3最大公因258
8.3.4RSA算法261
8.4復習字典:跳表264
8.4.1映射抽像數據類型265
8.4.2用Python實現字典265
8.5復習樹:量化圖片274
8.5.1數字圖像概述274
8.5.2量化圖片275
8.5.3使用八叉樹改進量化算法277
8.6復習圖:模式匹配284
8.6.1生物學字符串285
8.6.2簡單比較285
8.6.3使用圖:DFA287
8.6.4使用圖:KMP288
8.7小結291
8.8關鍵術語291
8.9討論題291
8.10編程練習292
附錄APython圖形包293
附錄BPython資源294
參考資料295
《Python編程 從入門到實踐》
第一部分基礎知識
第1章起步 2
1.1搭建編程環境 2
1.1.1Python 2和Python 3 2
1.1.2運行Python代碼片段 3
1.1.3Hello World程序 3
1.2在不同操作繫統中搭建Python編程環境 3
1.2.1在Linux繫統中搭建Python編程環境 3
1.2.2在OS X繫統中搭建Python編程環境 6
1.2.3在Windows繫統中搭建Python編程環境 8
1.3解決安裝問題 12
1.4從終端運行Python程序 13
1.4.1在Linux和OS X繫統中從終端運行Python程序 13
1.4.2在Windows繫統中從終端運行Python程序 13
1.5小結 14
第2章變量和簡單數據類型 15
2.1運行hello_world.py時發生的情況 15
2.2變量 16
2.2.1變量的命名和使用 16
2.2.2使用變量時避免命名錯誤 17
2.3字符串 18
2.3.1使用方法修改字符串的大小寫 19
2.3.2合並(拼接)字符串 19
2.3.3使用制表符或換行符來添加空白 20
2.3.4刪除空白 21
2.3.5使用字符串時避免語法錯誤 22
2.3.6Python 2中的print語句 23
2.4數字 24
2.4.1整數 24
2.4.2浮點數 25
2.4.3使用函數str()避免類型錯誤 25
2.4.4Python 2中的整數 26
2.5注釋 27
2.5.1如何編寫注釋 27
2.5.2該編寫什麼樣的注釋 28
2.6Python之禪 28
2.7小結 30
第3章列表簡介 31
3.1列表是什麼 31
3.1.1訪素 32
3.1.2索引從0而不是1開始 32
3.1.3使用列表中的各個值 33
3.2修改、添加素 33
3.2.1修素 34
3.2.2在列表素 34
3.2.3從列表素 35
3.3組織列表 39
3.3.1使用方法sort()對列表進行永久性排序 39
3.3.2使用函數sorted()對列表進行臨時排序 40
3.3.3倒著打印列表 41
3.3.4確定列表的長度 41
3.4使用列表時避免索引錯誤 42
3.5小結 43
第4章操作列表 44
4.1遍歷整個列表 44
4.1.1深入地研究循環 45
4.1.2在for循環中執行更多的操作 46
4.1.3在for循環結束後執行一些操作 47
4.2避免縮進錯誤 47
4.2.1忘記縮進 48
4.2.2忘記縮進額外的代碼行 48
4.2.3不必要的縮進 49
4.2.4循環後不必要的縮進 49
4.2.5遺漏了冒號 50
4.3創建數值列表 51
4.3.1使用函數range() 51
4.3.2使用range()創建數字列表 51
4.3.3對數字列表執行簡單的統計計算 53
4.3.4列表解析 53
4.4使用列表的一部分 54
4.4.1切片 54
4.4.2遍歷切片 56
4.4.3復制列表 56
4組 59
4.5.1組 59
4.5.2組中的所有值 59
4.5.3組變量 60
4.6設置代碼格式 61
4.6.1格式設置指南 61
4.6.2縮進 61
4.6.3行長 61
4.6.4空行 62
4.6.5其他格式設置指南 62
4.7小結 63
第5章if語句 64
5.1一個簡單示例 64
5.2條件測試 65
5.3if語句 70
5.4使用if語句處理列表 76
5.5設置if語句的格式 80
5.6小結 80
第6章字典 81
6.1一個簡單的字典 81
6.2使用字典 82
6.3遍歷字典 87
6.4嵌套 93
6.5小結 99
第7章用戶輸入和while循環 100
7.1函數input()的工作原理 100
7.2while循環簡介 104
7.3使用while循環來處理列表和字典 110
7.4小結 113
第8章函數 114
8.1定義函數 114
8.2傳遞實參 116
8.3返回值 121
8.4傳遞列表 126
8.5傳遞任意數量的實參 130
8.6將函數存儲在模塊中 133
8.7函數編寫指南 136
8.8小結 137
第9章類 138
9.1創建和使用類 138
9.2使用類和實例 142
9.3繼承 147
9.4導入類 153
9.5Python標準庫 159
9.6類編碼風格 161
9.7小結 161
第10章文件和異常 162
10.1從文件中讀取數據 162
10.2寫入文件 169
10.3異常 172
10.4存儲數據 180
10.5小結 186
第11章測試代碼 187
11.1測試函數 187
11.2測試類 193
11.3小結 199
第二部分項目
項目1外星人入侵 202
第12章武裝飛船 203
12.1規劃項目 203
12.2安裝Pygame 204
12.3開始遊戲項目 207
12.4添加飛船圖像 211
12.5重構:模塊game_functions 214
12.6駕駛飛船 216
12.7簡單回顧 223
12.8射擊 224
12.9小結 231
第13章外星人 232
13.1回顧項目 232
13.2創建第一個外星人 233
13.3創建一群外星人 236
13.4讓外星人群移動 242
13.5射殺外星人 246
13.6結束遊戲 250
13.7確定應運行遊戲的哪些部分 255
13.8小結 256
第14章記分 257
14.1添加Play按鈕 257
14.2提高等級 264
14.3記分 267
14.4小結 283
項目2數據可視化 284
第15章生成數據 285
15.1安裝matplotlib 285
15.2繪制簡單的折線圖 287
15.3隨機漫步 295
15.4使用Pygal模擬擲骰子 303
15.5小結 311
第16章下載數據 312
16.1CSV文件格式 312
16.2制作交易收盤價走勢圖:JSON格式 324
16.3小結 337
第17章使用API 338
17.1使用Web API 338
17.2使用Pygal可視化倉庫 344
17.3Hacker News API 350
17.4小結 353
項目3Web應用程序 354
第18章Django入門 355
18.1建立項目 355
18.2創建應用程序 360
18.3創建網頁:學習筆記主頁 369
18.4創建其他網頁 373
18.5小結 381
第19章用戶賬戶 382
19.1讓用戶能夠輸入數據 382
19.2創建用戶賬戶 392
19.3讓用戶擁有自己的數據 400
19.4小結 408
第20章設置應用程序的樣式並對其進行部署 409
20.1設置項目“學習筆記”的樣式 409
20.2部署“學習筆記” 419
20.3小結 435
附錄A安裝Python 436
附錄B文本編輯器 441
附錄C尋求幫助 447
附錄D使用Git進行版本控制 451
後記 460