- Python+人工智能行業(yè)分析
- Python基礎(chǔ)-1.1 開(kāi)班典禮01
- Python基礎(chǔ)-1.2 開(kāi)班典禮02
- Python基礎(chǔ)-1.3 人工智能解讀
- Python基礎(chǔ)-1.4 Python語(yǔ)言介紹
- Python基礎(chǔ)-1.5 課程介紹
- Python基礎(chǔ)-1.6 Python程序執(zhí)行
- Python基礎(chǔ)-1.7 Python執(zhí)行過(guò)程分析
- Python基礎(chǔ)-1.8 集成開(kāi)發(fā)工具介紹01
- Python基礎(chǔ)-1.9 集成開(kāi)發(fā)工具介紹02
- Python基礎(chǔ)-2.1 課程回顧
- Python基礎(chǔ)-2.2 Pycharm快捷鍵
- Python基礎(chǔ)-2.3 函數(shù)
- Python基礎(chǔ)-2.4 變量
- Python基礎(chǔ)-2.5 練習(xí)解析
- Python基礎(chǔ)-2.6 核心數(shù)據(jù)類(lèi)型
- Python基礎(chǔ)-2.7 數(shù)據(jù)類(lèi)型轉(zhuǎn)換
- Python基礎(chǔ)-2.8 算數(shù)與增強(qiáng)運(yùn)算符
- Python基礎(chǔ)-2.9 練習(xí)解析
- Python基礎(chǔ)-2.10 練習(xí)鞏固
- Python基礎(chǔ)-2.11 四位整數(shù)每位求和
- Python基礎(chǔ)-2.12 bool類(lèi)型及相關(guān)運(yùn)算符
- Python基礎(chǔ)-2.13 練習(xí)解析與課程回顧
- Python基礎(chǔ)-3.1 課程回顧01
- Python基礎(chǔ)-3.2 課程回顧02
- Python基礎(chǔ)-3.3 課后作業(yè)詳解
- Python基礎(chǔ)-3.4 del語(yǔ)句
- Python基礎(chǔ)-3.5 課后擴(kuò)展練習(xí)
- Python基礎(chǔ)-3.6 運(yùn)算符優(yōu)先級(jí)與語(yǔ)句之行介紹
- Python基礎(chǔ)-3.7 選擇語(yǔ)句之if語(yǔ)句
- Python基礎(chǔ)-3.8 if簡(jiǎn)要回顧與季度劃分練習(xí)
- Python基礎(chǔ)-3.9 計(jì)算器模擬與求取最大數(shù)練習(xí)
- Python基礎(chǔ)-3.10 成績(jī)等級(jí)判斷與計(jì)算月份天數(shù)
- Python基礎(chǔ)-3.11 真值與條件表達(dá)式
- Python基礎(chǔ)-3.12 循環(huán)之while死循環(huán)與計(jì)數(shù)
- Python基礎(chǔ)-4.1 課程內(nèi)容回顧
- Python基礎(chǔ)-4.2 課后作業(yè)解析
- Python基礎(chǔ)-4.3 打印中間數(shù)據(jù)值及紙的對(duì)折數(shù)練習(xí)
- Python基礎(chǔ)-4.4 猜數(shù)字游戲
- Python基礎(chǔ)-4.5 錄入成績(jī)練習(xí)
- Python基礎(chǔ)-4.6 for語(yǔ)句介紹及小練習(xí)
- Python基礎(chǔ)-4.7 隨機(jī)加法考試練習(xí)
- Python基礎(chǔ)-4.8 判斷素?cái)?shù)練習(xí)
- Python基礎(chǔ)-4.9 continue語(yǔ)句
- Python基礎(chǔ)-4.10 字符串相關(guān)概念
- Python基礎(chǔ)-4.11 編碼相關(guān)函數(shù)
- Python基礎(chǔ)-4.12 字面值
- Python基礎(chǔ)-4.13 容器類(lèi)通用操作
- Python基礎(chǔ)-4.14 練習(xí)解析及布置作業(yè)
- Python基礎(chǔ)-5.1 課程內(nèi)容回顧
- Python基礎(chǔ)-5.2 課后作業(yè)解析
- Python基礎(chǔ)-5.3 列表介紹01
- Python基礎(chǔ)-5.4 列表介紹02
- Python基礎(chǔ)-5.5 列表練習(xí)
- Python基礎(chǔ)-5.6 錄入學(xué)生姓名練習(xí)
- Python基礎(chǔ)-5.7 列表內(nèi)存圖
- Python基礎(chǔ)-5.8 深拷貝與淺拷貝
- Python基礎(chǔ)-5.9 列表內(nèi)存圖練習(xí)
- Python基礎(chǔ)-5.10 計(jì)算最大值及刪除元素的練習(xí)
- Python基礎(chǔ)-5.11 列表與字符串對(duì)比及布置作業(yè)
- Python基礎(chǔ)-6.1 課程內(nèi)容回顧
- Python基礎(chǔ)-6.2 課后作業(yè)解析之計(jì)算最小值
- Python基礎(chǔ)-6.3 課后作業(yè)解析之彩票問(wèn)題
- Python基礎(chǔ)-6.4 列表推導(dǎo)式與練習(xí)
- Python基礎(chǔ)-6.5 元組介紹
- Python基礎(chǔ)-6.6 元組的基本操作
- Python基礎(chǔ)-6.7 使用元組優(yōu)化代碼
- Python基礎(chǔ)-6.8 日期轉(zhuǎn)天數(shù)的練習(xí)
- Python基礎(chǔ)-6.9 字典介紹
- Python基礎(chǔ)-6.10 字典的基本操作
- Python基礎(chǔ)-6.11 商品信息錄入及打印練習(xí)
- Python基礎(chǔ)-6.12 學(xué)生信息錄入及打印練習(xí)
- Python基礎(chǔ)-6.13 字典與列表對(duì)比總結(jié)
- Python基礎(chǔ)-6.14 錄入多人喜好練習(xí)及布置作業(yè)
- Python基礎(chǔ)-7.1 課程內(nèi)容回顧
- Python基礎(chǔ)-7.2 課后作業(yè)解析
- Python基礎(chǔ)-7.3 字典推導(dǎo)式及練習(xí)解析
- Python基礎(chǔ)-7.4 集合
- Python基礎(chǔ)-7.5 練習(xí)解析及固定集合
- Python基礎(chǔ)-7.6 雙for循環(huán)
- Python基礎(chǔ)-7.7 練習(xí)解析及練習(xí)01
- Python基礎(chǔ)-7.8 練習(xí)解析及練習(xí)02
- Python基礎(chǔ)-7.9 函數(shù)
- Python基礎(chǔ)-7.10 練習(xí)解析及練習(xí)
- Python基礎(chǔ)-8.1 課程內(nèi)容回顧
- Python基礎(chǔ)-8.2 練習(xí)解析
- Python基礎(chǔ)-8.3 函數(shù)返回值
- Python基礎(chǔ)-8.4 函數(shù)練習(xí)01
- Python基礎(chǔ)-8.5 函數(shù)練習(xí)02
- Python基礎(chǔ)-8.6 函數(shù)內(nèi)存圖
- Python基礎(chǔ)-8.7 練習(xí)解析及練習(xí)
- Python基礎(chǔ)-8.8 作用域
- Python基礎(chǔ)-8.9 練習(xí)解析及函數(shù)傳參01
- Python基礎(chǔ)-8.10 函數(shù)傳參02
- Python基礎(chǔ)-8.11 函數(shù)傳參03及作業(yè)
- 面向?qū)ο?1.1 課程內(nèi)容回顧01
- 面向?qū)ο?1.2 課程內(nèi)容回顧02
- 面向?qū)ο?1.3 練習(xí)解析01
- 面向?qū)ο?1.4 練習(xí)解析02
- 面向?qū)ο?1.5 練習(xí)解析03
- 面向?qū)ο?1.6 2048游戲項(xiàng)目練習(xí)1
- 面向?qū)ο?1.7 2048游戲項(xiàng)目練習(xí)2,練習(xí)3
- 面向?qū)ο?1.8 2048游戲項(xiàng)目練習(xí)4
- 面向?qū)ο?1.9 面向?qū)ο蟾攀?/a>
- 面向?qū)ο?1.10 類(lèi)和對(duì)象
- 面向?qū)ο?1.11 布置作業(yè)
- 面向?qū)ο?2.1 課程內(nèi)容回顧01
- 面向?qū)ο?2.2 課程內(nèi)容回顧02
- 面向?qū)ο?2.3 實(shí)例成員01
- 面向?qū)ο?2.4 實(shí)例成員02
- 面向?qū)ο?2.5 練習(xí)及解析01
- 面向?qū)ο?2.6 練習(xí)及解析02
- 面向?qū)ο?2.7 類(lèi)成員
- 面向?qū)ο?2.8 練習(xí)解析及不建議語(yǔ)法
- 面向?qū)ο?2.9 靜態(tài)方法及作業(yè)
- 面向?qū)ο?3.1 課程回顧
- 面向?qū)ο?3.2 課后作業(yè)解析
- 面向?qū)ο?3.3 封裝01
- 面向?qū)ο?3.4 封裝02
- 面向?qū)ο?3.5 封裝03
- 面向?qū)ο?3.6 練習(xí)解析
- 面向?qū)ο?3.7 內(nèi)存圖解析
- 面向?qū)ο?3.8 封裝屬性
- 面向?qū)ο?3.9 封裝設(shè)計(jì)01
- 面向?qū)ο?3.10 封裝設(shè)計(jì)02
- 面向?qū)ο?3.11 練習(xí)解析及作業(yè)
- 面向?qū)ο?4.1 課程回顧01
- 面向?qū)ο?4.2 課程回顧02
- 面向?qū)ο?4.3 課后作業(yè)解析
- 面向?qū)ο?4.4 信息管理系統(tǒng)01
- 面向?qū)ο?4.5 信息管理系統(tǒng)02
- 面向?qū)ο?4.6 信息管理系統(tǒng)03
- 面向?qū)ο?4.7 信息管理系統(tǒng)04
- 面向?qū)ο?4.8 信息管理系統(tǒng)05
- 面向?qū)ο?4.9 信息管理系統(tǒng)06
- 面向?qū)ο?4.10 信息管理系統(tǒng)07及課后作業(yè)
- 面向?qū)ο?5.1 課程回顧
- 面向?qū)ο?5.2 課后作業(yè)解析
- 面向?qū)ο?5.3 繼承
- 面向?qū)ο?5.4 繼承的方法
- 面向?qū)ο?5.5 繼承的變量
- 面向?qū)ο?5.6 繼承的設(shè)計(jì)01
- 面向?qū)ο?5.7 繼承的設(shè)計(jì),多態(tài)
- 面向?qū)ο?5.8 習(xí)題練習(xí)01
- 面向?qū)ο?5.9 習(xí)題練習(xí)02
- 面向?qū)ο?5.10 習(xí)題練習(xí)03
- 面向?qū)ο?5.11 類(lèi)與類(lèi)的關(guān)系
- 面向?qū)ο?5.12 作業(yè)及總結(jié)
- Python核心-1.1 課程回顧01
- Python核心-1.2 課程回顧02
- Python核心-1.3 課后作業(yè)解析
- Python核心-1.4 內(nèi)置可重寫(xiě)函數(shù)
- Python核心-1.5 運(yùn)算符重載
- Python核心-1.6 繼承的多繼承及相關(guān)概念
- Python核心-1.7 技能系統(tǒng)設(shè)計(jì)思想
- Python核心-1.8 技能系統(tǒng)代碼實(shí)現(xiàn)
- Python核心-1.9 技能系統(tǒng)項(xiàng)目總結(jié)
- Python核心-1.10 模塊,模塊的使用及練習(xí)
- Python核心-1.11 練習(xí)解析及作業(yè)
- Python核心-2.1 課程回顧及作業(yè)解析
- Python核心-2.2 模塊的其它知識(shí)點(diǎn)
- Python核心-2.3 內(nèi)置模塊time
- Python核心-2.4 練習(xí)
- Python核心-2.5 包的概念與使用
- Python核心-2.6 練習(xí)
- Python核心-2.7 包知識(shí)點(diǎn)
- Python核心-2.8 異常處理
- Python核心-2.9 raise語(yǔ)句
- Python核心-2.10 自定義異常練習(xí)及作業(yè)
- Python核心-3.1 課程回顧
- Python核心-3.2 迭代,可迭代對(duì)象
- Python核心-3.3 練習(xí)
- Python核心-3.4 迭代器
- Python核心-3.5 練習(xí)及解析
- Python核心-3.6 練習(xí)解析01
- Python核心-3.7 練習(xí)解析02
- Python核心-3.8 生成器
- Python核心-3.9 練習(xí)解析
- Python核心-4.1 課程回顧
- Python核心-4.2 練習(xí)解析
- Python核心-4.3 生成器表達(dá)式
- Python核心-4.4 練習(xí)解析
- Python核心-4.5 函數(shù)式編程01
- Python核心-4.6 練習(xí)解析
- Python核心-4.7 函數(shù)式編程02
- Python核心-4.8 lambda表達(dá)式
- Python核心-4.9 lambda練習(xí)
- Python核心-4.10 練習(xí)解析及作業(yè)
- Python核心-5.1 課程回顧
- Python核心-5.2 作業(yè)解析01
- Python核心-5.3 作業(yè)解析02
- Python核心-5.4 練習(xí)解析01
- Python核心-5.5 練習(xí)解析02
- Python核心-5.6 練習(xí)解析03
- Python核心-5.7 內(nèi)置高階函數(shù)
- Python核心-5.8 練習(xí)解析及外部嵌套作用域
- Python核心-5.9 閉包
- Python核心-5.10 作業(yè)及優(yōu)秀答辯
- Python核心-6.1 課程回顧
- Python核心-6.2 作業(yè)解析
- Python核心-6.3 裝飾器
- Python核心-6.4 裝飾器練習(xí)
- Python核心-6.5 練習(xí)解析
- Python核心-6.6 項(xiàng)目01
- Python核心-6.7 項(xiàng)目02
- Python核心-6.8 項(xiàng)目03
- Python核心-6.9 項(xiàng)目04
- Python核心-6.10 項(xiàng)目05
- Python核心-6.11 項(xiàng)目06
- Python核心-6.12 課程復(fù)習(xí)01
- Python核心-6.13 課程復(fù)習(xí)02
- Python核心-6.14 課程復(fù)習(xí)03
- 數(shù)據(jù)結(jié)構(gòu)-1.1 課程介紹
- 數(shù)據(jù)結(jié)構(gòu)-1.2 數(shù)據(jù)結(jié)構(gòu)
- 數(shù)據(jù)結(jié)構(gòu)-1.3 邏輯結(jié)構(gòu)
- 數(shù)據(jù)結(jié)構(gòu)-1.4 存儲(chǔ)結(jié)構(gòu)
- 數(shù)據(jù)結(jié)構(gòu)-1.5 線性表的鏈?zhǔn)酱鎯?chǔ)
- 數(shù)據(jù)結(jié)構(gòu)-1.6 單鏈表類(lèi)構(gòu)建01
- 數(shù)據(jù)結(jié)構(gòu)-1.7 單鏈表類(lèi)構(gòu)建02
- 數(shù)據(jù)結(jié)構(gòu)-1.8 單鏈表類(lèi)構(gòu)建03
- 數(shù)據(jù)結(jié)構(gòu)-1.9 單鏈表類(lèi)構(gòu)建04
- 數(shù)據(jù)結(jié)構(gòu)-1.10 刪除節(jié)點(diǎn)
- 數(shù)據(jù)結(jié)構(gòu)-1.11 獲取節(jié)點(diǎn)
- 數(shù)據(jù)結(jié)構(gòu)-2.1 課程回顧
- 數(shù)據(jù)結(jié)構(gòu)-2.2 作業(yè)解析
- 數(shù)據(jù)結(jié)構(gòu)-2.3 棧
- 數(shù)據(jù)結(jié)構(gòu)-2.4 棧模型
- 數(shù)據(jù)結(jié)構(gòu)-2.5 練習(xí)解析
- 數(shù)據(jù)結(jié)構(gòu)-2.6 棧的鏈?zhǔn)綏?/a>
- 數(shù)據(jù)結(jié)構(gòu)-2.7 畫(huà)圖解析
- 數(shù)據(jù)結(jié)構(gòu)-2.8 隊(duì)列
- 數(shù)據(jù)結(jié)構(gòu)-2.9 隊(duì)列模型
- 數(shù)據(jù)結(jié)構(gòu)-2.10 畫(huà)圖解析
- 數(shù)據(jù)結(jié)構(gòu)-2.11 鏈?zhǔn)疥?duì)列
- 數(shù)據(jù)結(jié)構(gòu)-2.12 Markdowm演示
- 數(shù)據(jù)結(jié)構(gòu)-3.1 課程回顧
- 數(shù)據(jù)結(jié)構(gòu)-3.2 作業(yè)解析01
- 數(shù)據(jù)結(jié)構(gòu)-3.3 作業(yè)解析02
- 數(shù)據(jù)結(jié)構(gòu)-3.4 樹(shù)形結(jié)構(gòu)
- 數(shù)據(jù)結(jié)構(gòu)-3.5 二叉樹(shù)01
- 數(shù)據(jù)結(jié)構(gòu)-3.6 二叉樹(shù)02
- 數(shù)據(jù)結(jié)構(gòu)-3.7 練習(xí)解析01
- 數(shù)據(jù)結(jié)構(gòu)-3.8 練習(xí)解析02
- 數(shù)據(jù)結(jié)構(gòu)-3.9 二叉樹(shù)實(shí)踐01
- 數(shù)據(jù)結(jié)構(gòu)-3.10 二叉樹(shù)實(shí)踐02
- 數(shù)據(jù)結(jié)構(gòu)-3.11 二叉樹(shù)實(shí)踐03
- 數(shù)據(jù)結(jié)構(gòu)-3.12 算法基礎(chǔ)
- 數(shù)據(jù)結(jié)構(gòu)-3.13 排序01
- 數(shù)據(jù)結(jié)構(gòu)-3.14 排序02
- Linux-1 課程回顧
- Linux-2 作業(yè)解析
- Linux-3 二分查找
- Linux-4 Linux操作系統(tǒng)
- Linux-5 Linux命令
- Linux-6 IO與字節(jié)串
- Linux-7 文件操作01
- Linux-8 文件操作02
- Linux-9 文件操作03
- Linux-10 練習(xí)解析及作業(yè)
- 網(wǎng)絡(luò)并發(fā)-1.1 課程回顧,練習(xí)解析
- 網(wǎng)絡(luò)并發(fā)-1.2 with操作,文件緩沖區(qū)
- 網(wǎng)絡(luò)并發(fā)-1.3 文件偏移量
- 網(wǎng)絡(luò)并發(fā)-1.4 空洞文件,練習(xí)解析,文件函數(shù)
- 網(wǎng)絡(luò)并發(fā)-1.5 網(wǎng)絡(luò)編程基礎(chǔ)
- 網(wǎng)絡(luò)并發(fā)-1.6 OSI七層模型
- 網(wǎng)絡(luò)并發(fā)-1.7 TCPIP模型,數(shù)據(jù)傳輸
- 網(wǎng)絡(luò)并發(fā)-1.8 網(wǎng)絡(luò)基礎(chǔ)概念
- 網(wǎng)絡(luò)并發(fā)-1.9 tcp,udp服務(wù)
- 網(wǎng)絡(luò)并發(fā)-1.10 socket套接字
- 網(wǎng)絡(luò)并發(fā)-1.11 tcp服務(wù)端及作業(yè)
- 網(wǎng)絡(luò)并發(fā)-2.1 課程回顧
- 網(wǎng)絡(luò)并發(fā)-2.2 tcp客戶端
- 網(wǎng)絡(luò)并發(fā)-2.3 項(xiàng)目改進(jìn)
- 網(wǎng)絡(luò)并發(fā)-2.4 收發(fā)緩沖區(qū),tcp粘包
- 網(wǎng)絡(luò)并發(fā)-2.5 練習(xí)與解析
- 網(wǎng)絡(luò)并發(fā)-2.6 udp客戶端與服務(wù)端
- 網(wǎng)絡(luò)并發(fā)-2.7 練習(xí)與解析
- 網(wǎng)絡(luò)并發(fā)-2.8 socket套接字屬性
- 網(wǎng)絡(luò)并發(fā)-2.9 udp應(yīng)用
- 網(wǎng)絡(luò)并發(fā)-2.10 tcp應(yīng)用01
- 網(wǎng)絡(luò)并發(fā)-2.11 tcp應(yīng)用02及作業(yè)
- 網(wǎng)絡(luò)并發(fā)-3.1 課程回顧
- 網(wǎng)絡(luò)并發(fā)-3.2 http響應(yīng)
- 網(wǎng)絡(luò)并發(fā)-3.3 練習(xí)與解析
- 網(wǎng)絡(luò)并發(fā)-3.4 struct模塊
- 網(wǎng)絡(luò)并發(fā)-3.5 多任務(wù)編程
- 網(wǎng)絡(luò)并發(fā)-3.6 進(jìn)程的基本概念
- 網(wǎng)絡(luò)并發(fā)-3.7 進(jìn)程特征,fork
- 網(wǎng)絡(luò)并發(fā)-3.8 fork代碼詳解
- 網(wǎng)絡(luò)并發(fā)-3.9 進(jìn)程相關(guān)函數(shù),孤兒和僵尸進(jìn)程
- 網(wǎng)絡(luò)并發(fā)-3.10 僵尸進(jìn)程詳解及作業(yè)
- 網(wǎng)絡(luò)并發(fā)-4.1 課程回顧
- 網(wǎng)絡(luò)并發(fā)-4.2 群聊聊天室01
- 網(wǎng)絡(luò)并發(fā)-4.3 群聊聊天室02
- 網(wǎng)絡(luò)并發(fā)-4.4 群聊聊天室03
- 網(wǎng)絡(luò)并發(fā)-4.5 群聊聊天室04
- 網(wǎng)絡(luò)并發(fā)-4.6 群聊聊天室05
- 網(wǎng)絡(luò)并發(fā)-4.7 聊天室總結(jié)、multiprocessing
- 網(wǎng)絡(luò)并發(fā)-4.8 multiprocessing創(chuàng)建多進(jìn)程
- 網(wǎng)絡(luò)并發(fā)-4.9 進(jìn)程對(duì)象屬性
- 網(wǎng)絡(luò)并發(fā)-4.10 進(jìn)程池及作業(yè)
- 網(wǎng)絡(luò)并發(fā)-5.1 課程回顧
- 網(wǎng)絡(luò)并發(fā)-5.2 進(jìn)程間通信Pipe
- 網(wǎng)絡(luò)并發(fā)-5.3 進(jìn)程間通信Queue
- 網(wǎng)絡(luò)并發(fā)-5.4 共享內(nèi)存
- 網(wǎng)絡(luò)并發(fā)-5.5 信號(hào)量
- 網(wǎng)絡(luò)并發(fā)-5.6 線程編程
- 網(wǎng)絡(luò)并發(fā)-5.7 Threading模塊
- 網(wǎng)絡(luò)并發(fā)-5.8 線程參數(shù)傳遞、對(duì)象屬性
- 網(wǎng)絡(luò)并發(fā)-5.9 自定義線程類(lèi)
- 網(wǎng)絡(luò)并發(fā)-5.10 練習(xí)及解析
- 網(wǎng)絡(luò)并發(fā)-5.11 線程間通信方法、Event
- 網(wǎng)絡(luò)并發(fā)-5.12 Lock、死鎖及作業(yè)
- 網(wǎng)絡(luò)并發(fā)-6.1 課程回顧
- 網(wǎng)絡(luò)并發(fā)-6.2 作業(yè)解析01
- 網(wǎng)絡(luò)并發(fā)-6.3 作業(yè)解析02
- 網(wǎng)絡(luò)并發(fā)-6.4 并發(fā)網(wǎng)絡(luò)通信01
- 網(wǎng)絡(luò)并發(fā)-6.5 并發(fā)網(wǎng)絡(luò)通信02
- 網(wǎng)絡(luò)并發(fā)-6.6 并發(fā)網(wǎng)絡(luò)通信03
- 網(wǎng)絡(luò)并發(fā)-6.7 多線程并發(fā)01
- 網(wǎng)絡(luò)并發(fā)-6.8 多線程并發(fā)02
- 網(wǎng)絡(luò)并發(fā)-6.9 多線程并發(fā)03
- 網(wǎng)絡(luò)并發(fā)-6.10 多線程并發(fā)04
- 網(wǎng)絡(luò)并發(fā)-6.11 多線程并發(fā)05
- 網(wǎng)絡(luò)并發(fā)-6.12 多線程并發(fā)06及作業(yè)
- 網(wǎng)絡(luò)并發(fā)-7.1 課程回顧
- 網(wǎng)絡(luò)并發(fā)-7.2 作業(yè)解析
- 網(wǎng)絡(luò)并發(fā)-7.3 IO
- 網(wǎng)絡(luò)并發(fā)-7.4 非阻塞IO
- 網(wǎng)絡(luò)并發(fā)-7.5 IO多路復(fù)用01
- 網(wǎng)絡(luò)并發(fā)-7.6 select方法
- 網(wǎng)絡(luò)并發(fā)-7.7 IO多路復(fù)用02
- 網(wǎng)絡(luò)并發(fā)-7.8 IO多路復(fù)用03
- 網(wǎng)絡(luò)并發(fā)-7.9 IO多路復(fù)用04
- 網(wǎng)絡(luò)并發(fā)-7.10 位運(yùn)算
- 網(wǎng)絡(luò)并發(fā)-7.11 poll方法01
- 網(wǎng)絡(luò)并發(fā)-7.12 poll方法02
- 網(wǎng)絡(luò)并發(fā)-7.13 epoll及總結(jié)
- 網(wǎng)絡(luò)并發(fā)-7.14 協(xié)程及作業(yè)
- 網(wǎng)絡(luò)并發(fā)-8.1 課程回顧
- 網(wǎng)絡(luò)并發(fā)-8.2 協(xié)程01
- 網(wǎng)絡(luò)并發(fā)-8.3 協(xié)程02
- 網(wǎng)絡(luò)并發(fā)-8.4 協(xié)程03
- 網(wǎng)絡(luò)并發(fā)-8.5 HTTP2.0_01
- 網(wǎng)絡(luò)并發(fā)-8.6 HTTP2.0_02
- 網(wǎng)絡(luò)并發(fā)-8.7 HTTP2.0_03
- 網(wǎng)絡(luò)并發(fā)-8.8 HTTP2.0_04
- 網(wǎng)絡(luò)并發(fā)-8.9 HTTP2.0_05
- 網(wǎng)絡(luò)并發(fā)-8.10 系統(tǒng)編程詳解
- 網(wǎng)絡(luò)并發(fā)-8.11 正則表達(dá)式01
- 網(wǎng)絡(luò)并發(fā)-8.12 正則表達(dá)式02及作業(yè)
- RE模塊-1 課程回顧_元字符01
- RE模塊-2 元字符02
- RE模塊-3 元字符03
- RE模塊-4 元字符04
- RE模塊-5 貪婪非貪婪模式及練習(xí)
- RE模塊-6 練習(xí)解析及分組
- RE模塊-7 re模塊使用01
- RE模塊-8 re模塊使用02
- RE模塊-9 re模塊使用03
- RE模塊-10 flags及練習(xí)
- RE模塊-11 練習(xí)解析及作業(yè)
- MySQL-1.1 MYSQL簡(jiǎn)介01
- MySQL-1.2 MYSQL簡(jiǎn)介02
- MySQL-1.3 數(shù)據(jù)庫(kù)結(jié)構(gòu)
- MySQL-1.4 SQL語(yǔ)句
- MySQL-1.5 數(shù)據(jù)表及數(shù)據(jù)類(lèi)型
- MySQL-1.6 表操作_創(chuàng)建
- MySQL-1.7 表操作_增
- MySQL-1.8 表操作_查
- MySQL-1.9 練習(xí)及解析
- MySQL-1.10 練習(xí)解析及作業(yè)
- MySQL-2.1 課程回顧
- MySQL-2.2 日期時(shí)間函數(shù)
- MySQL-2.3 時(shí)間操作,高級(jí)查詢語(yǔ)句
- MySQL-2.4 排序,分頁(yè),聯(lián)合查詢
- MySQL-2.5 pymysql的使用
- MySQL-2.6 讀寫(xiě)操作
- MySQL-2.7 修改,刪除,練習(xí)
- MySQL-2.8 練習(xí)解析
- MySQL-2.9 二進(jìn)制文件存儲(chǔ)
- MySQL-2.10 練習(xí),解析,作業(yè)
- 項(xiàng)目實(shí)戰(zhàn)-1.1 git介紹
- 項(xiàng)目實(shí)戰(zhàn)-1.2 git的配置
- 項(xiàng)目實(shí)戰(zhàn)-1.3 git的基本命令
- 項(xiàng)目實(shí)戰(zhàn)-1.4 git指令02
- 項(xiàng)目實(shí)戰(zhàn)-1.5 git指令03,注冊(cè)git
- 項(xiàng)目實(shí)戰(zhàn)-1.6 git工作區(qū)
- 項(xiàng)目實(shí)戰(zhàn)-1.7 分支管理01
- 項(xiàng)目實(shí)戰(zhàn)-1.8 分支管理02,遠(yuǎn)程倉(cāng)庫(kù)
- 項(xiàng)目實(shí)戰(zhàn)-1.9 添加遠(yuǎn)程倉(cāng)庫(kù)
- 項(xiàng)目實(shí)戰(zhàn)-1.10 遠(yuǎn)程倉(cāng)庫(kù)操作
- 項(xiàng)目實(shí)戰(zhàn)-1.11 遠(yuǎn)程倉(cāng)庫(kù)操作
- 項(xiàng)目實(shí)戰(zhàn)-1.12 軟件項(xiàng)目開(kāi)發(fā)流程
- 項(xiàng)目實(shí)戰(zhàn)-2.1 課程回顧
- 項(xiàng)目實(shí)戰(zhàn)-2.2 電子詞典01
- 項(xiàng)目實(shí)戰(zhàn)-2.3 電子詞典02
- 項(xiàng)目實(shí)戰(zhàn)-2.4 電子詞典03
- 項(xiàng)目實(shí)戰(zhàn)-2.5 電子詞典04
- 項(xiàng)目實(shí)戰(zhàn)-2.6 電子詞典05
- 項(xiàng)目實(shí)戰(zhàn)-2.7 電子詞典06
- 項(xiàng)目實(shí)戰(zhàn)-2.8 電子詞典07
- 項(xiàng)目實(shí)戰(zhàn)-2.9 電子詞典08
- 項(xiàng)目實(shí)戰(zhàn)-2.10 電子詞典09
- 項(xiàng)目實(shí)戰(zhàn)-2.11 電子詞典10,作業(yè)
- 項(xiàng)目實(shí)戰(zhàn)-3.1 課程回顧
- 項(xiàng)目實(shí)戰(zhàn)-3.2 電子詞典09(完結(jié))
- 項(xiàng)目實(shí)戰(zhàn)-3.3 HTTPServer項(xiàng)目分析
- 項(xiàng)目實(shí)戰(zhàn)-3.4 HTTPServer01
- 項(xiàng)目實(shí)戰(zhàn)-3.5 HTTPServer02
- 項(xiàng)目實(shí)戰(zhàn)-3.6 HTTPServer03
- 項(xiàng)目實(shí)戰(zhàn)-3.7 HTTPServer04
- 項(xiàng)目實(shí)戰(zhàn)-3.8 HTTPServer05
- 項(xiàng)目實(shí)戰(zhàn)-3.9 HTTPServer06
- 項(xiàng)目實(shí)戰(zhàn)-3.10 HTTPServer07
- 項(xiàng)目實(shí)戰(zhàn)-3.11 項(xiàng)目總結(jié),第二階段總結(jié)
- HTML+CSS-1.1 課程介紹
- HTML+CSS-1.2 HTML基本結(jié)構(gòu)
- HTML+CSS-1.3 HTML常用標(biāo)簽01
- HTML+CSS-1.4 字符實(shí)體
- HTML+CSS-1.5 HTML常用標(biāo)簽02
- HTML+CSS-1.6 HTML常用標(biāo)簽03
- HTML+CSS-1.7 常用結(jié)構(gòu)標(biāo)簽01
- HTML+CSS-1.8 常用結(jié)構(gòu)標(biāo)簽02
- HTML+CSS-1.9 表單控件01
- HTML+CSS-1.10 表單控件02
- HTML+CSS-1.11 練習(xí)01
- HTML+CSS-1.12 練習(xí)02
- HTML+CSS-1.13 作業(yè)元素總結(jié)
- HTML+CSS-2.1 CSS內(nèi)嵌樣式
- HTML+CSS-2.2 CSS使用方式
- HTML+CSS-2.3 CSS樣式
- HTML+CSS-2.4 CSS選擇器01
- HTML+CSS-2.5 CSS選擇器02
- HTML+CSS-2.6 CSS選擇器03
- HTML+CSS-2.7 CSS選擇器04
- HTML+CSS-2.8 元素的尺寸
- HTML+CSS-2.9 元素的顏色
- HTML+CSS-2.10 練習(xí)
- HTML+CSS-2.11 作業(yè)解析01
- HTML+CSS-2.12 作業(yè)解析02
- HTML+CSS-2.13 作業(yè)解析及作業(yè)
- HTML+CSS-3.1 邊框
- HTML+CSS-3.2 圓角邊框
- HTML+CSS-3.3 輪廓線
- HTML+CSS-3.4 內(nèi)外邊距01
- HTML+CSS-3.5 內(nèi)外邊距02
- HTML+CSS-3.6 頁(yè)面布局
- HTML+CSS-3.7 浮動(dòng)布局01
- HTML+CSS-3.8 浮動(dòng)布局02
- HTML+CSS-3.9 練習(xí)
- HTML+CSS-3.10 作業(yè)解析01
- HTML+CSS-3.11 作業(yè)解析02
- HTML+CSS-3.12 作業(yè)解析03
- HTML+CSS-3.13 作業(yè)解析及作業(yè)
- HTML+CSS-4.1 定位布局
- HTML+CSS-4.2 相對(duì)定位
- HTML+CSS-4.3 絕對(duì)定位
- HTML+CSS-4.4 固定定位
- HTML+CSS-4.5 堆疊次序
- HTML+CSS-4.6 設(shè)置背景圖片01
- HTML+CSS-4.7 設(shè)置背景圖片02
- HTML+CSS-4.8 文本屬性
- HTML+CSS-4.9 作業(yè)解析01
- HTML+CSS-4.10 作業(yè)解析02
- HTML+CSS-4.11 作業(yè)解析03
- HTML+CSS-4.12 作業(yè)解析及作業(yè)
- JS-1.1 JavaScript概述,使用方式
- JS-1.2 JavaScript輸入輸出語(yǔ)句
- JS-1.3 DOM事件處理
- JS-1.4 基礎(chǔ)語(yǔ)法,變量常量
- JS-1.5 數(shù)據(jù)類(lèi)型
- JS-1.6 運(yùn)算符
- JS-1.7 練習(xí)與解析01
- JS-1.8 作業(yè)解析01
- JS-1.9 練習(xí)與解析02
- JS-1.10 練習(xí)與解析03
- JS-1.11 作業(yè)解析02
- JS-2.1 課程回顧,順序結(jié)構(gòu)
- JS-2.2 分支,選擇結(jié)構(gòu)
- JS-2.3 display
- JS-2.4 switch語(yǔ)句
- JS-2.5 循環(huán)結(jié)構(gòu)
- JS-2.6 event
- JS-2.7 課堂案例及解析
- JS-2.8 課后作業(yè)及作業(yè)解析
- JS-2.9 作業(yè)解析01
- JS-2.10 作業(yè)解析02
- JS-3.1 頁(yè)面分離,函數(shù)
- JS-3.2 匿名函數(shù),擴(kuò)展的JSON格式函數(shù),普通定義函數(shù)
- JS-3.3 作用域,內(nèi)置對(duì)象
- JS-3.4 示例代碼調(diào)整
- JS-3.5 內(nèi)置對(duì)象的屬性方法
- JS-3.6 其它方法,二維數(shù)組,String對(duì)象
- JS-3.7 String的其它方法
- JS-3.8 分割字符串
- JS-3.9 模式匹配,正則表達(dá)式,字符串方法
- JS-3.10 Math對(duì)象
- JS-3.11 日期對(duì)象
- JS-3.12 課堂示例及作業(yè)
毫無(wú)疑問(wèn),Python如今是野蠻增長(zhǎng),增速非常快。隨著人工智能的崛起,Python會(huì)更加的火爆。比爾蓋茨說(shuō)過(guò),之后的幾十年,人工智能會(huì)強(qiáng)大到足以引起人們的重視。Python將有可能沖擊每月編程語(yǔ)言排行榜第一的位置。
Python可以說(shuō)是一門(mén)比較功利的語(yǔ)言,它不復(fù)雜,讀和寫(xiě)都非常易于使用,所以才有了“人生苦短,我用Python”這樣的調(diào)侃。
這套教程非常全面而且詳細(xì),從Python入門(mén)到Python進(jìn)階、Django、Flask等Web框架以及爬蟲(chóng)、數(shù)據(jù)庫(kù)、算法與數(shù)據(jù)結(jié)構(gòu)等方面均有涉及,幾乎覆蓋了Python 基礎(chǔ)及進(jìn)階的方方面面。
0引言
微信公眾號(hào)終于可以插代碼了,Python 可以走一波了。首先我承認(rèn)不是硬核搞 IT 的,太高級(jí)的玩法也玩不來(lái),講講下面基本的還可以,之后帶點(diǎn)機(jī)器學(xué)習(xí)、金融工程和量化投資的實(shí)例也是可以。
Python 入門(mén)篇 (上)
Python 入門(mén)篇 (下)
數(shù)組計(jì)算之 NumPy
科學(xué)計(jì)算之 SciPy
數(shù)據(jù)結(jié)構(gòu)之 Pandas
基本可視化之 Matplotlib
統(tǒng)計(jì)可視化之 Seaborn
交互可視化之 Bokeh
炫酷可視化之 PyEcharts
機(jī)器學(xué)習(xí)之 Sklearn
深度學(xué)習(xí)之 TensorFlow
深度學(xué)習(xí)之 Keras
深度學(xué)習(xí)之 PyTorch
深度學(xué)習(xí)之 MXnet
整個(gè)系列力求精簡(jiǎn)和實(shí)用 (可能不會(huì)完整,但看完此貼舉一反三也不要完整,追求完整的建議去看書(shū)),到了「難點(diǎn)處」我一定會(huì)畫(huà)圖幫助讀者理解。Python 系列的入門(mén)篇的目錄如下,本帖是上篇,只涵蓋前三個(gè)節(jié),下篇接著后兩節(jié)。
對(duì)于任何一種計(jì)算機(jī)語(yǔ)言,我覺(jué)得最重要的就是「數(shù)據(jù)類(lèi)型」「條件語(yǔ)句 & 迭代循環(huán)」和「函數(shù)」,這三方面一定要打牢基礎(chǔ)。此外 Python 非常簡(jiǎn)潔,一行代碼 (one-liner) 就能做很多事情,很多時(shí)候都用了各種「解析式」,比如列表、字典和集合解析式。
在學(xué)習(xí)本貼前感受一下這個(gè)問(wèn)題:如何把以下這個(gè)不規(guī)則的列表 a 里的所有元素一個(gè)個(gè)寫(xiě)好,專(zhuān)業(yè)術(shù)語(yǔ)叫打平 (flatten)?
a = [1, 2, [3, 4], [[5, 6], [7, 8]]]
魔法來(lái)了 (這一行代碼有些長(zhǎng),用手機(jī)的建議橫屏看)
fn = lambda x: [y for l in x for y in fn(l)] if type(x) is list else [x]
fn(a)
[1, 2, 3, 4, 5, 6, 7, 8]
這一行代碼,用到了迭代、匿名函數(shù)、遞推函數(shù)、解析式這些技巧。初學(xué)者一看只會(huì)說(shuō)“好酷啊,但看不懂”,看完本帖和下帖后,我保證你會(huì)說(shuō)“我也會(huì)這樣用了,真酷!”
1基本數(shù)據(jù)類(lèi)型
Python 里面有自己的內(nèi)置數(shù)據(jù)類(lèi)型 (build-in data type),本節(jié)介紹基本的三種,分別是整型 (int),浮點(diǎn)型 (float),和布爾型 (bool)。
1.1
整型
整數(shù) (integer) 是最簡(jiǎn)單的數(shù)據(jù)類(lèi)型,和下面浮點(diǎn)數(shù)的區(qū)別就是前者小數(shù)點(diǎn)后沒(méi)有值,后者小數(shù)點(diǎn)后有值。例子如下:
a = 1031
print( a, type(a) )
1031
通過(guò) print 的可看出 a 的值,以及類(lèi) (class) 是 int。Python 里面萬(wàn)物皆對(duì)象(object),「整數(shù)」也不例外,只要是對(duì)象,就有相應(yīng)的屬性 (attributes) 和方法 (methods)。
知識(shí)點(diǎn)
通過(guò) dir( X ) 和help( X ) 可看出 X 對(duì)應(yīng)的對(duì)象里可用的屬性和方法。
X 是 int,那么就是 int 的屬性和方法
X 是 float,那么就是 float 的屬性和方法
等等
dir(int)
['__abs__',
'__add__',
...
'__xor__',
'bit_length',
'conjugate',
...
'real',
'to_bytes']
紅色的是 int 對(duì)象的可用方法,藍(lán)色的是 int 對(duì)象的可用屬性。對(duì)他們你有個(gè)大概印象就可以了,具體怎么用,需要哪些參數(shù) (argument),你還需要查文檔。看個(gè)bit_length的例子
a.bit_length()
11
該函數(shù)是找到一個(gè)整數(shù)的二進(jìn)制表示,再返回其長(zhǎng)度。在本例中 a = 1031, 其二進(jìn)制表示為 ‘10000000111’ ,長(zhǎng)度為 11。
1.2
浮點(diǎn)型
簡(jiǎn)單來(lái)說(shuō),浮點(diǎn)型 (float) 數(shù)就是實(shí)數(shù), 例子如下:
print( 1, type(1) )
print( 1., type(1.) )
1
1.0
加一個(gè)小數(shù)點(diǎn) . 就可以創(chuàng)建 float,不能再簡(jiǎn)單。有時(shí)候我們想保留浮點(diǎn)型的小數(shù)點(diǎn)后 n 位。可以用 decimal 包里的 Decimal 對(duì)象和 getcontext() 方法來(lái)實(shí)現(xiàn)。
import decimal
from decimal import Decimal
Python 里面有很多用途廣泛的包 (package),用什么你就引進(jìn) (import) 什么。包也是對(duì)象,也可以用上面提到的dir(decimal) 來(lái)看其屬性和方法。比如 getcontext() 顯示了 Decimal 對(duì)象的默認(rèn)精度值是 28 位 (prec=28),展示如下:
decimal.getcontext()
Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999,
Emax=999999, capitals=1, clamp=0, flags=[],
traps=[InvalidOperation, DivisionByZero, Overflow])
讓我們看看 1/3 的保留 28 位長(zhǎng)什么樣?
d = Decimal(1) / Decimal(3)
d
Decimal('0.3333333333333333333333333333')
那保留 4 位呢?用 getcontext().prec 來(lái)調(diào)整精度哦。
decimal.getcontext().prec = 4
e = Decimal(1) / Decimal(3)
e
Decimal('0.3333')
高精度的 float 加上低精度的 float,保持了高精度,沒(méi)毛病。
d + e
Decimal('0.6666333333333333333333333333')
1.3
布爾型
布爾 (boolean) 型變量只能取兩個(gè)值,True 和 False。當(dāng)把布爾變量用在數(shù)字運(yùn)算中,用 1 和 0 代表 True 和 False。
T = True
F = False
print( T + 2 )
print( F - 8 )
3
-8
除了直接給變量賦值 True 和 False,還可以用 bool(X) 來(lái)創(chuàng)建變量,其中 X 可以是
基本類(lèi)型:整型、浮點(diǎn)型、布爾型
容器類(lèi)型:字符、元組、列表、字典和集合
基本類(lèi)型
print( type(0), bool(0), bool(1) )
print( type(10.31), bool(0.00), bool(10.31) )
print( type(True), bool(False), bool(True) )
bool 作用在基本類(lèi)型變量的總結(jié):X 只要不是整型 0、浮點(diǎn)型 0.0,bool(X) 就是 True,其余就是 False。
容器類(lèi)型
print( type(''), bool( '' ), bool( 'python' ) )
print( type(()), bool( () ), bool( (10,) ) )
print( type([]), bool( [] ), bool( [1,2] ) )
print( type({}), bool( {} ), bool( {'a':1, 'b':2} ) )
print( type(set()), bool( set() ), bool( {1,2} ) )
bool 作用在容器類(lèi)型變量的總結(jié):X 只要不是空的變量,bool(X) 就是 True,其余就是 False。
知識(shí)點(diǎn)
確定bool(X) 的值是 True 還是 False,就看 X 是不是空,空的話就是 False,不空的話就是 True。
對(duì)于數(shù)值變量,0, 0.0 都可認(rèn)為是空的。
對(duì)于容器變量,里面沒(méi)元素就是空的。
此外兩個(gè)布爾變量 P 和 Q 的邏輯運(yùn)算的結(jié)果總結(jié)如下表:
2容器數(shù)據(jù)類(lèi)型
上節(jié)介紹的整型、浮點(diǎn)型和布爾型都可以看成是單獨(dú)數(shù)據(jù),而這些數(shù)據(jù)都可以放在一個(gè)容器里得到一個(gè)「容器類(lèi)型」的數(shù)據(jù),比如:
字符 (str) 是一容器的字節(jié) char,注意 Python 里面沒(méi)有 char 類(lèi)型的數(shù)據(jù),可以把單字符的 str 當(dāng)做 char。
元組 (tuple)、列表 (list)、字典 (dict) 和集合 (set) 是一容器的任何類(lèi)型變量。
2.1
字符
字符用于處理文本 (text) 數(shù)據(jù),用「單引號(hào) ’」和「雙引號(hào) “」來(lái)定義都可以。
創(chuàng)建字符
t1 = 'i love Python!'
print( t1, type(t1) )
t2 = "I love Python!"
print( t2, type(t2) )
i love Python!
I love Python!
字符中常見(jiàn)的內(nèi)置方法 (可以用 dir(str) 來(lái)查) 有
capitalize():大寫(xiě)句首的字母
split():把句子分成單詞
find(x):找到給定詞 x 在句中的索引,找不到返回 -1
replace(x, y):把句中 x 替代成 y
strip(x):刪除句首或句末含 x 的部分
t1.capitalize()
'I love python!'
t2.split()
['I', 'love', 'Python!']
print( t1.find('love') )
print( t1.find('like') )
2
-1
t2.replace( 'love Python', 'hate R' )
'I hate R!'
print( 'http://www.python.org'.strip('htp:/') )
print( 'http://www.python.org'.strip('.org') )
www.python.org
http://www.python
索引和切片
s = 'Python'
print( s )
print( s[2:4] )
print( s[-5:-2] )
print( s[2] )
print( s[-1] )
Python
th
yth
t
n
知識(shí)點(diǎn)
Python 里面索引有三個(gè)特點(diǎn) (經(jīng)常讓人困惑):
從 0 開(kāi)始 (和 C 一樣),不像 Matlab 從 1 開(kāi)始。
切片通常寫(xiě)成 start:end 這種形式,包括「start 索引」對(duì)應(yīng)的元素,不包括「end索引」對(duì)應(yīng)的元素。因此 s[2:4] 只獲取字符串第 3 個(gè)到第 4 個(gè)元素。
索引值可正可負(fù),正索引從 0 開(kāi)始,從左往右;負(fù)索引從 -1 開(kāi)始,從右往左。使用負(fù)數(shù)索引時(shí),會(huì)從最后一個(gè)元素開(kāi)始計(jì)數(shù)。最后一個(gè)元素的位置編號(hào)是 -1。
這些特點(diǎn)引起讀者對(duì)切片得到什么樣的元素感到困惑。有個(gè)小竅門(mén)可以幫助大家快速鎖定切片的元素,如下圖。
與其把注意力放在元素對(duì)應(yīng)的索引,不如想象將元素分開(kāi)的隔欄,顯然 6 個(gè)元素需要 7 個(gè)隔欄,隔欄索引也是從 0 開(kāi)始,這樣再看到 start:end 就認(rèn)為是隔欄索引,那么獲取的元素就是「隔欄 start」和「隔欄 end」之間包含的元素。如上圖:
string[2:4] 就是「隔欄 2」和「隔欄 4」之間包含的元素,即 th
string[-5:-2] 就是「隔欄 -5」和「隔欄 -2」之間包含的元素,即 yth
正則表達(dá)式
正則表達(dá)式 (regular expression) 主要用于識(shí)別字符串中符合某種模式的部分,什么叫模式呢?用下面一個(gè)具體例子來(lái)講解。
input = """
'06/18/2019 13:00:00', 100, '1st';
'06/18/2019 13:30:00', 110, '2nd';
'06/18/2019 14:00:00', 120, '3rd'
"""
input
"\n'06/18/2019 13:00:00', 100, '1st';
\n'06/18/2019 13:30:00', 110, '2nd';
\n'06/18/2019 14:00:00', 120, '3rd'\n"
假如你想把上面字符串中的「時(shí)間」的模式來(lái)抽象的表示出來(lái),對(duì)照著具體表達(dá)式 '06/18/2019 13:00:00' 來(lái)看,我們發(fā)現(xiàn)該字符串有以下規(guī)則:
開(kāi)頭和結(jié)束都有個(gè)單引號(hào) '
里面有多個(gè) 0-9 數(shù)字
里面有多個(gè)正斜線 / 和分號(hào) :
還有一個(gè)空格
因此我們用下面這樣的模式
pattern = re.compile("'[0-9/:\s]+'")
再看這個(gè)抽象模式表達(dá)式 '[0-9/:\s]+',里面符號(hào)的意思如下:
最外面的兩個(gè)單引號(hào) ' 代表該模式以它們開(kāi)始和結(jié)束
中括號(hào) [] 用來(lái)概括該模式涵蓋的所有類(lèi)型的字節(jié)
0-9 代表數(shù)字類(lèi)的字節(jié)
/ 代表正斜線
: 代表分號(hào)
\s 代表空格
[] 外面的加號(hào) + 代表 [] 里面的字節(jié)出現(xiàn)至少 1 次
有了模式 pattern,我們來(lái)看看是否能把字符串中所有符合 pattern 的日期表達(dá)式都找出來(lái)。
pattern.findall(input)
["'06/18/2019 13:00:00'",
"'06/18/2019 13:30:00'",
"'06/18/2019 14:00:00'"]
結(jié)果是對(duì)的,之后你想怎么盤(pán)它就是你自己的事了,比如把 / 換成 -,比如用 datetime 里面的 striptime() 把日期里年、月、日、小時(shí)、分鐘和秒都獲取出來(lái)。
2.2
元組
創(chuàng)建元組
「元組」定義語(yǔ)法為
(元素1, 元素2, ..., 元素n)
關(guān)鍵點(diǎn)是「小括號(hào) ()」和「逗號(hào) ,」
小括號(hào)把所有元素綁在一起
逗號(hào)將每個(gè)元素一一分開(kāi)
創(chuàng)建元組的例子如下:
t1 = (1, 10.31, 'python')
t2 = 1, 10.31, 'python'
print( t1, type(t1) )
print( t2, type(t2) )
(1, 10.31, 'python')
(1, 10.31, 'python')
知識(shí)點(diǎn)
創(chuàng)建元組可以用小括號(hào) (),也可以什么都不用,為了可讀性,建議還是用 ()。此外對(duì)于含單個(gè)元素的元組,務(wù)必記住要多加一個(gè)逗號(hào),舉例如下:
print( type( ('OK') ) ) # 沒(méi)有逗號(hào) ,
print( type( ('OK',) ) ) # 有逗號(hào) ,
看看,沒(méi)加逗號(hào)來(lái)創(chuàng)建含單元素的元組,Python 認(rèn)為它是字符。
當(dāng)然也可以創(chuàng)建二維元組:
nested = (1, 10.31, 'python'), ('data', 11)
nested
((1, 10.31, 'python'), ('data', 11))
索引和切片
元組中可以用整數(shù)來(lái)對(duì)它進(jìn)行索引 (indexing) 和切片 (slicing),不嚴(yán)謹(jǐn)?shù)闹v,前者是獲取單個(gè)元素,后者是獲取一組元素。接著上面二維元組的例子,先看看索引的代碼:
nested[0]
print( nested[0][0], nested[0][1], nested[0][2] )
(1, 10.31, 'python')
1 10.31 python
再看看切片的代碼:
nested[0][0:2]
(1, 10.31)
不可更改
元組有不可更改 (immutable) 的性質(zhì),因此不能直接給元組的元素賦值,例子如下 (注意「元組不支持元素賦值」的報(bào)錯(cuò)提示)。
t = ('OK', [1, 2], True)
t[2] = False
TypeError: 'tuple' object does not support item assignment
但是只要元組中的元素可更改 (mutable),那么我們可以直接更改其元素,注意這跟賦值其元素不同。如下例 t[1] 是列表,其內(nèi)容可以更改,因此用 append 在列表后加一個(gè)值沒(méi)問(wèn)題。
t[1].append(3)
('OK', [1, 2, 3], True)
內(nèi)置方法
元組大小和內(nèi)容都不可更改,因此只有 count 和 index 兩種方法。
t = (1, 10.31, 'python')
print( t.count('python') )
print( t.index(10.31) )
1
1
這兩個(gè)方法返回值都是 1,但意思完全不同
count('python') 是記錄在元組 t 中該元素出現(xiàn)幾次,顯然是 1 次
index(10.31) 是找到該元素在元組 t 的索引,顯然是 1
元組拼接
元組拼接 (concatenate) 有兩種方式,用「加號(hào) +」和「乘號(hào) *」,前者首尾拼接,后者復(fù)制拼接。
(1, 10.31, 'python') + ('data', 11) + ('OK',)
(1, 10.31, 'python') * 2
(1, 10.31, 'python', 'data', 11, 'OK')
(1, 10.31, 'python', 1, 10.31, 'python')
解壓元組
解壓 (unpack) 一維元組 (有幾個(gè)元素左邊括號(hào)定義幾個(gè)變量)
t = (1, 10.31, 'python')
(a, b, c) = t
print( a, b, c )
1 10.31 python
解壓二維元組 (按照元組里的元組結(jié)構(gòu)來(lái)定義變量)
t = (1, 10.31, ('OK','python'))
(a, b, (c,d)) = t
print( a, b, c, d )
1 10.31 OK python
如果你只想要元組其中幾個(gè)元素,用通配符「*」,英文叫 wildcard,在計(jì)算機(jī)語(yǔ)言中代表一個(gè)或多個(gè)元素。下例就是把多個(gè)元素丟給了 rest 變量。
t = 1, 2, 3, 4, 5
a, b, *rest, c = t
print( a, b, c )
print( rest )
1 2 5
[3, 4]
如果你根本不在乎 rest 變量,那么就用通配符「*」加上下劃線「_」,劉例子如下:
a, b, *_ = t
print( a, b )
1 2
優(yōu)點(diǎn)缺點(diǎn)
優(yōu)點(diǎn):占內(nèi)存小,安全,創(chuàng)建遍歷速度比列表快,可一賦多值。
缺點(diǎn):不能添加和更改元素。
等等等,這里有點(diǎn)矛盾,元組的不可更改性即使優(yōu)點(diǎn) (安全) 有時(shí)缺點(diǎn)?確實(shí)是這樣的,安全就沒(méi)那么靈活,靈活就沒(méi)那么安全。看看大佬廖雪峰怎么評(píng)價(jià)「不可更改性」吧
immutable 的好處實(shí)在是太多了:性能優(yōu)化,多線程安全,不需要鎖,不擔(dān)心被惡意修改或者不小心修改。
后面那些安全性的東西我也不大懂,性能優(yōu)化這個(gè)我可以來(lái)測(cè)試一下列表和元組。列表雖然沒(méi)介紹,但是非常簡(jiǎn)單,把元組的「小括號(hào) ()」該成「中括號(hào) []」就是列表了。我們從創(chuàng)建、遍歷和占空間三方面比較。
創(chuàng)建
%timeit [1, 2, 3, 4, 5]
%timeit (1, 2, 3, 4, 5)
62 ns ± 13.2 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
12.9 ns ± 1.94 ns per loop (mean ± std. dev. of 7 runs, 100000000 loops each)
創(chuàng)建速度,元組 (12.9ns) 碾壓列表 (62ns)。
遍歷
lst = [i for i in range(65535)]
tup = tuple(i for i in range(65535))
%timeit for each in lst: pass
%timeit for each in tup: pass
507 μs ± 61.1 μs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
498 μs ± 18.7 μs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
遍歷速度兩者相當(dāng),元組 (498 μs) 險(xiǎn)勝列表 (507 μs)。
占空間
from sys import getsizeof
print( getsizeof(lst) )
print( getsizeof(tup) )
578936
524328
列表比元組稍微廢點(diǎn)內(nèi)存空間。
2.3
列表
創(chuàng)建列表
「列表」定義語(yǔ)法為
[元素1, 元素2, ..., 元素n]
關(guān)鍵點(diǎn)是「中括號(hào) []」和「逗號(hào) ,」
中括號(hào)把所有元素綁在一起
逗號(hào)將每個(gè)元素一一分開(kāi)
創(chuàng)建列表的例子如下:
l = [1, 10.31,'python']
print(l, type(l))
[1, 10.31, 'python']
內(nèi)置方法
不像元組,列表內(nèi)容可更改 (mutable),因此附加 (append, extend)、插入 (insert)、刪除 (remove, pop) 這些操作都可以用在它身上。
附加
l.append([4, 3])
print( l )
l.extend([1.5, 2.0, 'OK'])
print( l )
[1, 10.31, 'python', [4, 3]]
[1, 10.31, 'python', [4, 3], 1.5, 2.0, 'OK']
嚴(yán)格來(lái)說(shuō) append 是追加,把一個(gè)東西整體添加在列表后,而 extend 是擴(kuò)展,把一個(gè)東西里的所有元素添加在列表后。對(duì)著上面結(jié)果感受一下區(qū)別。
插入
l.insert(1, 'abc') # insert object before the index position
l
[1, 'abc', 10.31, 'python', [4, 3], 1.5, 2.0, 'OK']
insert(i, x) 在編號(hào) i 位置前插入 x。對(duì)著上面結(jié)果感受一下。
刪除
l.remove('python') # remove first occurrence of object
l
[1, 'abc', 10.31, [4, 3], 1.5, 2.0, 'OK']
p = l.pop(3) # removes and returns object at index. Only only pop 1 index position at any time.
print( p )
print( l )
[4, 3]
[1, 'abc', 10.31, 1.5, 2.0, 'OK']
remove 和 pop 都可以刪除元素
前者是指定具體要?jiǎng)h除的元素,比如 'python'
后者是指定一個(gè)編號(hào)位置,比如 3,刪除 l[3] 并返回出來(lái)
對(duì)著上面結(jié)果感受一下,具體用哪個(gè)看你需求。
切片索引
索引 (indexing) 和切片 (slicing) 語(yǔ)法在元組那節(jié)都講了,而且怎么判斷切片出來(lái)的元素在字符那節(jié)也講了,規(guī)則如下圖:
對(duì)照上圖看下面兩個(gè)例子 (順著數(shù)和倒著數(shù)編號(hào)):
l = [7, 2, 9, 10, 1, 3, 7, 2, 0, 1]
l[1:5]
[2, 9, 10, 1]
l[-4:]
[7, 2, 0, 1]
列表可更改,因此可以用切片來(lái)賦值。
l[2:4] = [999, 1000]
l
[7, 2, 999, 1000, 1, 3, 7, 2, 0, 1]
切片的通用寫(xiě)法是
start : stop : step
這三個(gè)在特定情況下都可以省去,我們來(lái)看看四種情況:
情況 1 - start :
print( l )
print( l[3:] )
print( l[-4:] )
[7, 2, 999, 1000, 1, 3, 7, 2, 0, 1]
[1000, 1, 3, 7, 2, 0, 1]
[7, 2, 0, 1]
以 step 為 1 (默認(rèn)) 從編號(hào) start 往列表尾部切片。
