本書詳細(xì)地介紹了Python語(yǔ)言的一些高級(jí)功能以及常見數(shù)據(jù)類型的高級(jí)用法,非常適合有一定基礎(chǔ)的讀者深入學(xué)習(xí)Python編程。本書的主要內(nèi)容包括常見內(nèi)置類型(數(shù)值、字符串和集合等)的高級(jí)用法和潛在的陷阱,用于文本處理的格式化方法和正則表達(dá)式,用于數(shù)值計(jì)算和大規(guī)模數(shù)據(jù)處理的math包和numpy包等。此外,文件存儲(chǔ)、隨機(jī)數(shù)生成和圖表繪制也是本書的重要內(nèi)容。本書還開發(fā)了一個(gè)“RPN腳本解釋器”項(xiàng)目,該項(xiàng)目貫穿本書的各個(gè)章節(jié),通過對(duì)該項(xiàng)目的學(xué)習(xí),你也可以開發(fā)出自己的“語(yǔ)言”。
Brian Overland是10多本編程書的作者,其中包括Python Without Fear 和C++ for the Impatient。在微軟的10年里,他是一名軟件測(cè)試員、程序員/作家和經(jīng)理。他是Visual Basic 1.0 文檔項(xiàng)目的主要作者和整體負(fù)責(zé)人。通過制作課程,編寫圖書、手冊(cè)和教程,他向數(shù)十萬(wàn)人傳授編程技術(shù)。John Bennett曾任 Proximity Technology、Franklin Electronic Publishing 和 Microsoft Corporation 的高級(jí)軟件工程師。最近,他使用 Python 作為原型設(shè)計(jì)工具開發(fā)了新的編程語(yǔ)言。他參與過各種軟件項(xiàng)目,包括手持拼寫檢查器和東亞手寫識(shí)別軟件。他擁有9項(xiàng)美國(guó)專利。
【作者介紹】Brian Overland出版了多本編程書,其中包括Python Without Fear和《寫給大忙人看的C++》(C++ for the Impatient)。在微軟的10年里,他是一名軟件測(cè)試員、程序員、作家和經(jīng)理。他是Visual Basic 1.0文檔項(xiàng)目的主要作者和整體負(fù)責(zé)人。通過制作課程,編寫圖書、手冊(cè)和教程,他向數(shù)十萬(wàn)人傳授編程技術(shù)。John Bennett曾任Proximity Technology、Franklin Electronic Publishing和Microsoft Corporation的高級(jí)軟件工程師。最近,他使用Python作為原型設(shè)計(jì)工具開發(fā)了新的編程語(yǔ)言。他參與過各種軟件項(xiàng)目,包括手持拼寫檢查器和東亞手寫識(shí)別軟件。他擁有9項(xiàng)美國(guó)專利!咀g者介紹】李輝,北京科技大學(xué)高等工程師學(xué)院教師,主要研究方向?yàn)闄C(jī)器視覺、機(jī)器人應(yīng)用開發(fā)及競(jìng)賽研究。獲得2018年機(jī)器人世界杯中國(guó)賽標(biāo)準(zhǔn)組季軍,多次獲得相關(guān)項(xiàng)目國(guó)家級(jí)和北京市級(jí)獎(jiǎng)項(xiàng)。致力于學(xué)用結(jié)合,鼓勵(lì)學(xué)生在項(xiàng)目中鍛煉提升。韓慧昌,資深A(yù)I產(chǎn)品研發(fā)工程師,擁有豐富的AI產(chǎn)品和Python項(xiàng)目開發(fā)經(jīng)驗(yàn),F(xiàn)微軟亞洲互聯(lián)網(wǎng)工程院算法工程師,微軟智匯學(xué)院講師,曾任ThoughtWorks高級(jí)咨詢師。熱衷于AI相關(guān)技術(shù)的分享,《Python機(jī)器學(xué)習(xí)手冊(cè)》中文譯者。
第1章 基礎(chǔ)知識(shí)復(fù)習(xí)
1.1 Python快速入門
1.2 變量和命名
1.3 復(fù)合賦值運(yùn)算符
1.4 Python算術(shù)運(yùn)算符簡(jiǎn)介
1.5 基本數(shù)據(jù)類型:整數(shù)和浮點(diǎn)
1.6 基本輸入與輸出
1.7 函數(shù)定義
1.8 Python中的if語(yǔ)句
1.9 Python中的while語(yǔ)句
1.10 幾個(gè)很棒的小應(yīng)用程序
1.11 Python布爾運(yùn)算符總結(jié)
1.12 函數(shù)的參數(shù)和返回值
1.13 前向引用問題
1.14 Python的字符串
1.15 Python列表(和一個(gè)很棒的排序應(yīng)用程序)
1.16 for語(yǔ)句和range函數(shù)
1.17 Python元組
1.18 字典
1.19 集合
1.20 全局和局部變量
總結(jié)
習(xí)題
推薦項(xiàng)目
第2章 字符串高級(jí)功能
2.1 不可變的字符串
2.2 數(shù)據(jù)類型轉(zhuǎn)換
2.3 字符串運(yùn)算符(+、=、*、>等)
2.4 索引和切片
2.5 單字符函數(shù)
2.6 用join函數(shù)構(gòu)建字符串
2.7 重要的字符串函數(shù)
2.8 二進(jìn)制、八進(jìn)制和十六進(jìn)制轉(zhuǎn)換函數(shù)
2.9 字符串的布爾方法
2.10 大小寫轉(zhuǎn)換方法
2.11 字符串的搜索和替換
2.12 使用split方法拆分字符串
2.13 從字符串中剝離字符
2.14 字符串對(duì)齊
總結(jié)
習(xí)題
推薦項(xiàng)目
第3章 高級(jí)列表功能
3.1 創(chuàng)建和使用Python列表
3.2 復(fù)制列表與復(fù)制列表變量
3.3 列表索引
3.3.1 正索引
3.3.2 負(fù)索引
3.3.3 使用enumerate生成索引號(hào)
3.4 從列表切片中獲取數(shù)據(jù)
3.5 列表切片賦值
3.6 列表運(yùn)算符
3.7 淺拷貝與深拷貝
3.8 列表函數(shù)
3.9 列表方法:修改列表
3.10 列表方法:獲取列表信息
3.11 列表方法:重新排序
3.12 堆棧列表:RPN應(yīng)用
3.13 reduce函數(shù)
3.14 lambda表達(dá)式(匿名函數(shù))
3.15 列表推導(dǎo)式
3.16 字典和集合推導(dǎo)式
3.17 通過列表傳遞參數(shù)
3.18 多維列表
3.18.1 不平衡矩陣
3.18.2 創(chuàng)建任意大的矩陣
總結(jié)
習(xí)題
推薦項(xiàng)目
第4章 編程技巧、命令行和程序包
4.1 概述
4.2 22個(gè)編程技巧
4.2.1 根據(jù)需要使Python命令跨越多行
4.2.2 合理使用for循環(huán)
4.2.3 使用組合運(yùn)算符(+=等)
4.2.4 進(jìn)行多重賦值
4.2.5 使用元組賦值
4.2.6 使用高級(jí)元組賦值
4.2.7 使用列表和字符串“乘法”
4.2.8 返回多個(gè)值
4.2.9 使用循環(huán)和else關(guān)鍵字
4.2.10 使用布爾值和not運(yùn)算符
4.2.11 將字符串視為字符列表
4.2.12 使用replace方法消除字符
4.2.13 不寫不必要的循環(huán)
4.2.14 使用鏈?zhǔn)奖容^(n < x < m)
4.2.15 用函數(shù)列表模擬switch語(yǔ)句
4.2.16 正確使用is運(yùn)算符
4.2.17 使用單行for循環(huán)
4.2.18 將多條語(yǔ)句壓縮到一行
4.2.19 編寫單行if/then/else語(yǔ)句
4.2.20 用range函數(shù)創(chuàng)建枚舉值
4.2.21 在IDLE中減少效率低下的print函數(shù)的使用
4.2.22 用下畫線分隔大數(shù)字
4.3 從命令行運(yùn)行Python
4.3.1 在Windows系統(tǒng)上運(yùn)行
4.3.2 在Macintosh系統(tǒng)上運(yùn)行
4.3.3 使用pip或pip3下載軟件包
4.4 編寫和使用文檔字符串
4.5 導(dǎo)入軟件包
4.6 Python軟件包簡(jiǎn)介
4.7 Python函數(shù)作為一類對(duì)象
4.8 可變長(zhǎng)度參數(shù)列表
4.8.1 *args列表參數(shù)
4.8.2 **kwargs列表參數(shù)
4.9 裝飾器和函數(shù)分析器
4.10 生成器
4.10.1 什么是迭代器
4.10.2 關(guān)于生成器
4.11 訪問命令行參數(shù)
總結(jié)
習(xí)題
推薦項(xiàng)目
第5章 精確格式化文本
5.1 使用字符串格式說明符(%)進(jìn)行格式化
5.2 %格式說明符
5.3 使用%創(chuàng)建可變寬度輸出字段
5.4 全局函數(shù)format
5.5 format方法介紹
5.6 根據(jù)position(名稱或索引)引用參數(shù)
5.7 repr轉(zhuǎn)換與str轉(zhuǎn)換
5.8 format函數(shù)/方法的spec字段
5.8.1 輸出字段的寬度
5.8.2 文本對(duì)齊:fill和align字符
5.8.3 符號(hào)字符sign
5.8.4 前導(dǎo)“0”字符
5.8.5 千位分隔符
5.8.6 精度符號(hào)precision
5.8.7 將precision用于字符串格式化
5.8.8 類型說明符type
5.8.9 以二進(jìn)制顯示
5.8.10 以八進(jìn)制和十六進(jìn)制顯示
5.8.11 顯示百分?jǐn)?shù)
5.8.12 二進(jìn)制表示的例子
5.9 可變長(zhǎng)字段
總結(jié)
習(xí)題
推薦項(xiàng)目
第6章 正則表達(dá)式 第1部分
6.1 正則表達(dá)式簡(jiǎn)介
6.2 實(shí)用案例:電話號(hào)碼
6.3 改進(jìn)匹配模式
6.4 正則表達(dá)式是如何工作的:編譯與運(yùn)行
6.5 忽略大小寫和其他功能標(biāo)志
6.6 正則表達(dá)式:基本語(yǔ)法摘要
6.6.1 元字符
6.6.2 字符集
6.6.3 模式量詞
6.6.4 回溯、貪婪和非貪婪
6.7 一個(gè)實(shí)用的正則表達(dá)式案例
6.8 使用match對(duì)象
6.9 在字符串中搜索模式
6.10 迭代搜索findall
6.11 findall函數(shù)和分組問題
6.12 搜索重復(fù)模式
6.13 文本替換
總結(jié)
習(xí)題
推薦項(xiàng)目
第7章 正則表達(dá)式,第2部分
7.1 正則表達(dá)式高級(jí)語(yǔ)法摘要
7.2 非標(biāo)記組
7.2.1 匹配規(guī)范數(shù)字示例
7.2.2 解決標(biāo)記問題
7.3 貪婪匹配與非貪婪匹配
7.4 先行斷言
7.5 使用先行斷言檢查多個(gè)模式
7.6 負(fù)向先行斷言
7.7 命名組
7.8 re.split函數(shù)
7.9 Scanner類和RPN項(xiàng)目
7.10 RPN:使用掃描器做更多的事情
總結(jié)
習(xí)題
推薦項(xiàng)目
第8章 文本和二進(jìn)制文件
8.1 兩種文件格式:文本文件和二進(jìn)制文件
8.1.1 文本文件
8.1.2 二進(jìn)制文件
8.2 二進(jìn)制文件讀寫方法摘要
8.3 文件/目錄系統(tǒng)
8.4 處理文件打開異常
8.5 使用with關(guān)鍵字
8.6 讀/寫操作總結(jié)
8.7 文本文件操作詳解
8.8 使用文件指針(seek)
8.9 將文本讀入RPN項(xiàng)目
8.9.1 更新RPN解釋器代碼
8.9.2 從文本文件讀取RPN
8.9.3 向RPN中添加賦值運(yùn)算符
8.10 直接讀/寫二進(jìn)制文件
8.11 將數(shù)據(jù)轉(zhuǎn)換為定長(zhǎng)字段(struct)
8.11.1 一次讀/寫一個(gè)數(shù)字
8.11.2 一次讀/寫多個(gè)數(shù)字
8.11.3 讀/寫固定長(zhǎng)度的字符串
8.11.4 讀/寫可變長(zhǎng)度的字符串
8.11.5 讀/寫字符串和數(shù)字的組合
8.11.6 底層細(xì)節(jié)——高位優(yōu)先和低位優(yōu)先
8.12 使用pickle軟件包
8.13 使用shelve軟件包
總結(jié)
習(xí)題
推薦項(xiàng)目
第9章 類和魔術(shù)方法
9.1 類和對(duì)象的基礎(chǔ)語(yǔ)法
9.2 Python中的實(shí)例變量
9.3 __init__和__new__方法
9.4 類和前向引用問題
9.5 Python中的方法
9.6 公有和私有變量與方法
9.7 繼承
9.8 多重繼承
9.9 魔術(shù)方法總結(jié)
9.10 魔術(shù)方法詳解
9.10.1 Python類的字符串表示
9.10.2 對(duì)象表示方法
9.10.3 比較方法
9.10.4 算術(shù)運(yùn)算符方法
9.10.5 一元算術(shù)方法
9.10.6 反向方法
9.10.7 就地運(yùn)算符
9.10.8 轉(zhuǎn)換方法
9.10.9 集合類方法
9.10.10 實(shí)現(xiàn)__iter__和__next__方法
9.11 支持多種參數(shù)類型
9.12 動(dòng)態(tài)設(shè)置和獲取屬性
總結(jié)
習(xí)題
推薦項(xiàng)目
第10章 Decimal、Money和其他類型
10.1 數(shù)值類型概述
10.2 浮點(diǎn)類型的局限性
10.3 Decimal類
10.4 Decimal對(duì)象的特殊操作
10.5 Decimal類的應(yīng)用
10.6 設(shè)計(jì)Money類
10.7 構(gòu)建基礎(chǔ)的Money類(“包含”方式)
10.8 顯示Money對(duì)象(__str__、__repr__)
10.9 其他有關(guān)Money類的操作
10.10 程序Demo:Money計(jì)算器
10.11 設(shè)置默認(rèn)貨幣
10.12 Money類與繼承
10.13 Fraction類
10.14 complex類
總結(jié)
習(xí)題
建議項(xiàng)目
第11章 random包和math包
11.1 random包概述
11.2 隨機(jī)函數(shù)總覽
11.3 測(cè)試random包的行為
11.4 猜數(shù)字游戲
11.5 創(chuàng)建Deck對(duì)象
11.6 在牌庫(kù)中添加圖形
11.7 繪制正態(tài)分布圖
11.8 編寫自己的隨機(jī)數(shù)生成器
11.8.1 生成隨機(jī)數(shù)的原理
11.8.2 簡(jiǎn)單的生成器
11.9 math包概述
11.10 math包函數(shù)概覽
11.11 使用特殊值(pi)
11.12 三角函數(shù):計(jì)算樹的高度
11.13 對(duì)數(shù):再來(lái)一局猜數(shù)字
11.13.1 對(duì)數(shù)如何工作
11.13.2 將對(duì)數(shù)應(yīng)用于實(shí)際問題
總結(jié)
習(xí)題
推薦項(xiàng)目
第12章 Python科學(xué)計(jì)算包——numpy
12.1 array、numpy和matplotlib軟件包概述
12.1.1 array軟件包
12.1.2 numpy軟件包
12.1.3 numpy.random軟件包
12.1.4 matplotlib軟件包
12.2 使用array軟件包
12.3 下載并導(dǎo)入numpy包
12.4 numpy包簡(jiǎn)介:求1~1 000 000的和
12.5 創(chuàng)建numpy數(shù)組
12.5.1 array函數(shù)
12.5.2 arange函數(shù)
12.5.3 linspace函數(shù)
12.5.4 empty函數(shù)
12.5.5 eye函數(shù)
12.5.6 ones函數(shù)
12.5.7 zeros函數(shù)
12.5.8 full函數(shù)
12.5.9 copy函數(shù)
12.5.10 fromfunction函數(shù)
12.6 案例:創(chuàng)建一個(gè)乘法表
12.7 對(duì)numpy數(shù)組進(jìn)行批處理操作
12.8 numpy數(shù)組的切片
12.9 多維切片
12.10 布爾數(shù)組:用作numpy數(shù)組的掩碼
12.11 numpy和埃拉托色尼算法
12.12 獲取numpy數(shù)組的統(tǒng)計(jì)信息(標(biāo)準(zhǔn)差)
12.13 從numpy數(shù)組中獲取行和列
總結(jié)
習(xí)題
推薦項(xiàng)目
第13章 numpy的高級(jí)應(yīng)用
13.1 基于numpy的高級(jí)數(shù)學(xué)運(yùn)算
13.2 下載matplotlib包
13.3 使用numpy和matplotlib繪圖
13.4 繪制多條線
13.5 繪制復(fù)利曲線
13.6 使用matplotlib創(chuàng)建直方圖
13.7 圓和長(zhǎng)寬比
13.8 繪制餅圖
13.9 使用numpy進(jìn)行線性代數(shù)運(yùn)算
13.9.1 點(diǎn)積
13.9.2 外積函數(shù)
13.9.3 其他線性代數(shù)函數(shù)
13.10 三維繪圖
13.11 numpy軟件包在金融領(lǐng)域的應(yīng)用
13.12 使用xticks和yticks函數(shù)調(diào)整數(shù)軸
13.13 numpy混合數(shù)據(jù)記錄
13.14 讀取和寫入numpy數(shù)據(jù)文件
總結(jié)
習(xí)題
推薦項(xiàng)目
第14章 多模塊和RPN示例
14.1 Python中的模塊概述
14.2 一個(gè)簡(jiǎn)單的雙模塊的示例
14.3 import語(yǔ)句的多種形式
14.4 使用__all__符號(hào)
14.5 公有變量和模塊私有變量
14.6 主模塊和__main__函數(shù)
14.7 陷阱:相互導(dǎo)入問題
14.8 RPN示例:分解為兩個(gè)模塊
14.9 RPN示例:添加更多I/O指令
14.10 RPN示例的進(jìn)一步修改
14.10.1 添加行號(hào)跟蹤功能
14.10.2 添加非零跳轉(zhuǎn)功能
14.10.3 大于(>)和獲取隨機(jī)數(shù)(!)
14.11 RPN案例總結(jié)
總結(jié)
習(xí)題
推薦項(xiàng)目
第15章 從互聯(lián)網(wǎng)獲取財(cái)務(wù)數(shù)據(jù)
15.1 本章計(jì)劃
15.2 pandas程序包介紹
15.3 stock_load:一個(gè)簡(jiǎn)單的數(shù)據(jù)讀取器
15.4 創(chuàng)建簡(jiǎn)單的股價(jià)圖表
15.5 添加標(biāo)題和圖例
15.6 編寫makeplot函數(shù)(重構(gòu))
15.7 繪制兩支股票的價(jià)格走勢(shì)圖
15.8 繪制其他圖形
15.9 限制時(shí)間范圍
15.10 拆分圖表:對(duì)交易量進(jìn)行子圖繪制
15.11 添加移動(dòng)平均線
15.12 讓用戶選擇
總結(jié)
習(xí)題
推薦項(xiàng)目
附錄A Python運(yùn)算符優(yōu)先級(jí)表
附錄B Python中的內(nèi)置函數(shù)
附錄C 集合(Set)方法
附錄D 字典(Dictionary)方法
附錄E 其他語(yǔ)法說明