TOP
0
0
即日起~6/30,暑期閱讀書展,好書7折起
Python一行流:像專家一樣寫代碼(簡體書)
滿額折

Python一行流:像專家一樣寫代碼(簡體書)

商品資訊

人民幣定價:89 元
定價
:NT$ 534 元
優惠價
87465
領券後再享88折起
海外經銷商無庫存,到貨日平均30天至45天
可得紅利積點:13 點
相關商品
商品簡介
作者簡介
名人/編輯推薦
目次

商品簡介

本書專注於從初學邁向進階的Python編碼技術:如何像專家一樣寫出優雅、準確、簡潔高效的Python 單行代碼;閱讀任意一行Python 代碼時,如何系統性地對其進行拆解和分析。全書分為6 個章節,以單行代碼切入計算機科學的各個領域,包括Python 語言基礎、程序設計技巧、基於NumPy的科學計算、機器學習的主要算法模型、規則運算式進階、計算機科學中若干經典算法的單行實現等。

作者簡介

Christian Mayer是一位元計算機科學博士,也是知名Python網站創始人和維護者。該網站非常活躍,訂閱人數已經超過 2萬且仍在持續增長。他的網站不僅發展迅速,也幫助數以萬計的學習者提升了編碼技能和優化了在線業務。他同時也是CoffeeBreak Python系列自出版圖書的作者。譯者蘇丹,網上id一般為su27,2009年畢業於北京師範大學數學系,主要從事後端程序設計,也曾從事前端與用戶端開發工作。目前為豆瓣使用者產品後端負責人,日常跟Python打交道較多。2016年翻譯出版《深入理解 Flask》一書。

譯者蘇丹,網上id一般為su27,2009年畢業於北京師範大學數學系,主要從事後端程序設計,也曾從事前端與用戶端開發工作。目前為豆瓣使用者產品後端負責人,日常跟Python打交道較多。2016年翻譯出版《深入理解 Flask》一書。

名人/編輯推薦

《Python一行流》會教你閱讀和編寫一行流程式,系統性拆分和理解任意一行Python代碼,像專家一樣得心應手地編寫強壯、緊湊的Python程式。本書有5個章節,覆蓋了程序設計技巧、規則運算式、機器學習、資料科學的核心課題,以及許多有用的算法。通過對單行程式範例的詳細介紹,本書解釋了計算機科學的關鍵概念,並可用來提升編碼與分析的重要技能。你會學到Python的進階功能,例如列表解析、切片、lambda函數、規則運算式、map和reduce函數,以及切片賦值等。還將學到以下內容:

√ 借助各種資料結構解決真實世界的問題,例如用布林索引從資料集中找出污染超過平均水準的城市。

√ 使用NumPy的基礎功能,如陣列、形狀、軸、類型、廣播、高級索引、切片、排序、搜索、聚合以及資料分析等。

√ 使用K-Means算法進行無監督學習,以對高維陣列中的資料進行分析。

√ 編寫更高級的規則運算式,會用到組與命名組、前向否定、轉義字元、空白字元、字元集(以及反向字元集),以及貪婪/非貪婪操作符。

√ 理解一系列計算機科學主題,包括異形詞、回文、冪集、排列、階乘、素數、斐波那契數列、混淆加密、查找和排序算法。


推薦序一:幹一行,愛“一行”

幾年創業,幾經浮沉,我又回到了編碼一線,重拾寫代碼的樂趣。幸好當年讀過幾本經典書籍打底,如今重操舊業,尚能遊刃有餘。感慨中剛好春雨兄找我為《Python一行流》作序,讀來很有感觸,堪比當年經典,便欣然應允。

其實我一直是“一行流”的愛好者。早在使用 Python 2.3 版本的時代,我便嘗試如何用一行代碼完成字串裡的字元排序,並將過程和結果記錄在博客 1 上。雖然自從 Python 2.4 版本增加了 sorted()函數後我的奇技淫巧便沒了用武之地,但這種追求精確與極簡的 Pythonic 哲學持續地影響著我,多年後我以改善 Python 程式為名出版了自己的第一本書。

與我的淺嘗輒止不同,這本書把一行流當作了一個研究課題,所以整書極具體系。作者從 Python 語言、庫和算法多個層面和角度去探尋更簡明的代碼寫法,有助於讀者建立深入挖掘語言特性的動力,最終提升讀者的知識水準,寫起代碼如臂使指,“碼”上生花。我曾在網上分享過一段利用數字圖像形態學實現茶濾孔數計算的Python 程式,需要 80 行代碼,而網友 Arkbird 用一行 mathematica 代碼完成同樣的算法,“我看不懂,但我大受震憾。” 讀者們紛紛點讚。編寫一行流的代碼是一個“好程序員”的普遍追求,也是對語言、庫和算法的掌握程度和編碼能力的體現,但閱讀本書顯然有助於此,讀完本書後我編寫了自己的“一行流”版本:

print(("holes count: ", s := __import__(skimage, fromlist=[measure, morphology,io]))[0],

s.measure.label(s.morphology.binary_opening(s.io.imread("sample.png", as_gray=True) <0.5, selem=s.morphology.square(3)), return_num=True)[1])

代碼行數“濃縮”80 倍之後,性能也提升了 37 倍,同時自我感覺對 Python 語言、skimage 庫和數字圖像算法的理解更進了一步。許多初學者入門後陷入不知道能用 Python 做什麼的困惑,不妨讀一下這本書,然後嘗試把之前寫過的代碼改為“一行流”風格,應該能大有所獲。

本書譯者蘇丹網名 su27,他是圈內馳名“文藝青年”,前幾年一直聽說他在寫小說,搞文學創作。作為長年混跡文青基地豆瓣網的程序員,這並不奇怪,奇怪的是他突然翻譯了這本書。不過 su27 畢竟是在 Python 的“黃埔軍校”豆瓣團隊中成長起來的,這對本書的質量提供了保障。在閱讀這本書的過程中,也印證了我的所想,整本書清晰明瞭,極具美感,加上作者精心編排的知識體系,讀來如上雲梯,愉悅中知識就獲得了提升,是以為序。

——賴勇浩

廣州齊昌網絡科技有限公司創始人兼總經理

《編寫高質量代碼:改善Python程式的91個建議》作者



推薦序二:Su27 般大氣淩然


(Su27 當然比 Mig29 大氣)

一直以為 Su27 在寫科幻小說,

突然邀請來為新書寫序,

只能感歎:

不會寫科幻小說的程序員一定不是好翻譯


一看內容,更感歎,探討領域竟然如此“宅”:

專注揭露

如何在 Python 中

編寫能濃縮在單行的

神級 Pytonic 代碼

講真,Guido 老爹當年將 lambda 引入 Python 時,就勸過:

函式程序設計雖好,可別貪杯;

為此專門重新設計語法,

將 Python 構造為唯一基於排版來劃分語法層次的通用指令碼語言;

要知道,其它通用語言都通過識別字

(比如:{} begin end)來劃分代碼塊,

本質上無論軟件由多少行構成,

都可以寫在一行裡,

而編譯器照樣可以完美解析;

(實際上,很多混淆器就是這麼幹的.)


這樣一來,

在 Python 中無論初中高級,

大家寫出來的代碼,

都會很相似,

很直白,

結構很清晰


但是,

腦力過剩的程序員當然要為智商尋求宣洩,

果斷發現 Python 內置的炫酷可能性:

通過列表推導式,

就可以輕易繞過縮進規約,

將幾個想法集中進一行,

配合 Lambda 就可以將更多行為集成到一行中;

立即,

代碼看起來就不那麼泯然眾人矣 -> 第一眼根本看不明白要幹什麼


確實,這些可能性,

畢竟是老爹精心掩埋的珍寶,

以往也只有零星文章介紹幾個案例,

這次是一整本書,可以大大過癮;

翻譯沒毛病,老程式猿了;

版式也夠 geek,

清晰區分了內容/代碼/注釋/點評;

(可惜,譯者太自謙,

沒好意思大力插入豐富譯注,

將自己經驗也配套給出,

下個版次,值得追加.)


內容上,結構清晰,

從語法,到模組,

到協力廠商模組,

並第一時間構建了自己的 元述式:

0: 問題闡述

1: 常規處理

2: 一行流代碼

3: 如何工作的? 解析


這樣一個個案例,

就象一片片精緻的卡片,

有序拼貼起來,形成 一行流 小世界,

同時,

每個案例故事,

又都是能獨立使用的,

隨時可以拎出來用在具體工程中;


這應該是流式圖書構建法


只可惜,沒見到 海象運算式:= 相關案例,

這種新語法在 Python 3.8 中正式引入,

支持直接在列表推導式中進行複雜的判定,

結合反覆運算工具,簡直可以在 ["列表"] 中構造整個兒世界;


真心建議,在修訂版中,Su27 親自補一章,將:= 結合到實用場景中,

作為中國版一行流大補丁,回饋回作者心上.

——大媽/ZoomQuiet PyUG 聯合創始人,蟒營 ® 創始人



推薦序三

看到 su27 老師翻譯的這本書,我不禁啞然失笑,十幾年前我還在中國 Python 用戶組的郵寄清單裡活躍的時候,經常花大量精力和同好們討論怎麼把一段程式寫成一行流,一定要找出既簡潔又高效的方法來才肯甘休,樂此不疲。從這個遊戲出發,逐步形成了如何寫出更加 Pythonic 的代碼來的認知,而這個美學層面的認知升級,我至今受益不止。編碼是快樂的,希望有更多人能從這種“尋找極致”的過程中,體會到代碼之美。

——洪強寧 雅識科技聯合創始人兼CTO



推薦序四

談起 Python,從 2000 年到 2021 年,一門陪伴了我 20 多年的程序設計語言,其他語言大多是生命的過客,或者因為某些需求臨時起意而去學習使用,但唯獨 Python,從始至終用到了現在,但即便用了這麼久,都不敢輕言對於 Python 已經徹底瞭解,尤其談起一行流,更是各種程序設計語言論壇裡最愛比拼的項目之一,所謂一行流,就是能不能把一個功能用一行代碼去實現,Python 的一行流既保證了代碼的簡潔,又不會犧牲很大的可讀性,但一個看似如此簡單的事情,如果不對這門程序設計語言掌握的非常透徹,是很難做到的。如此有趣的主題,這麼多年來,卻很少看到這個主題的圖書,這次有幸讀到這本書,也從中學到了很多,尤其是機器學習和算法兩個章節,讀過之後感覺醍醐灌頂,馬上就可以把所學應用到日常工作中去了。同時,本書的翻譯者 su27 老師本身也是資深的 Python 開發者,在翻譯的準確度和流暢度方面,本書也遠超同類圖書。最後,很榮幸為此書寫序,甚感開心,預祝此書大賣,能夠幫助到更多的 Python 學習者與開發者。

——清風 前豆瓣技術總監,開 PA 創始人



推薦序五

《Python 一行流》 是一本適合 python 程序員進階的書,幫助讀者更好地領悟python 程序設計的思維方式。整本書從解決實際問題出發,通過一行流的形式,簡潔清晰的解決問題,很多例子都給出了非常新穎的角度。更為難得是,作者並非一味的追求一行流,在多行代碼能夠帶來更好閱讀性的時候,作者也欣然推薦指出此處一行流的不住。蘇老師的翻譯流暢準確,閱讀起來非常舒服,無論是中階 python 程序員還是高階程序員,相信通過閱讀此書都能有所收穫。

——彭宇 豆瓣平臺架構負責人




譯 者 序

大約 14 年前,我是個前端程序員,雖然沒學過 Python,但小夥伴們寫的 Python 代碼十分好讀,我看著就有種無師自通的幻覺,有時候自己也寫一些。雖然能跑通,但老覺得不對勁,生澀、重複、結巴,好像剛學了兩天英語就非要跑去跟老外聊天一樣。有個後端工程師叫 PY(巧了不是?),我有時就把自己寫的發給他,讓他幫我改,我想要“像 Python 一些”,果然他一改就流暢了很多,變得又短又好讀了。那時候我也幫後端改 JavaScript,但現在想來當時水準十分一般,真是慚愧。

後來我經常想,到底是什麼讓代碼看起來“更 Python”了。是一些 Python 獨有的關鍵字和語法嗎?是函數式程序設計嗎?是強大的動態特性嗎?是黑魔法元程序設計嗎?

也許是,又不是。寫了多年後端,我仍然不認為自己掌握了其中的秘訣,但我知道竅門一定隱藏在一行行樸實、優雅又節制的 Python 語句之中。

最近看了不少年輕朋友的簡歷和筆試答卷,很多人簡歷上寫了“熟悉 Python”,甚至做過 Python 項目,用 Python 寫了網站或者應用程式之類。但打開筆試中實際的Python 代碼,有時候只需要兩三行,就能看清底細。也許程式能跑通,甚至答案也對,但就是知道他們跟 Python 一點都不熟;他們知道 Python 的語法,但又不知道Python 怎麼寫;該簡潔的地方冗長,該清晰的地方意義不明,充滿了多餘的迴圈和分支,毫無技巧可言,不會用規則運算式,更不要提不規範的空格和換行。讀這樣的程式讓人焦慮煩躁,到處都在浪費空間、性能和閱讀者的時間,到處都在催促我趕緊把頁面關掉。看多了這樣的程式,會讓我覺得 Python 很沒意思。

我想,或許他們實力不弱,但如果把這樣的代碼貢獻到開源社區,恐怕每一行都會經受一番嚴厲的拷問。也許他們的確花了不少時間在學習和練習使用 Python,但可惜沒有接觸過真實世界的合作開發,沒有經受過複雜項目的代碼審核,沒有一個人或者一本書確切地告訴他們,如何把簡簡單單的一行 Python 代碼寫好。不僅僅是寫到能通過編譯,而是寫好,這是業餘選手和職業玩家的區別。

第一次看到書名中“一行流”這個詞時,我心中浮現的是 JavaScript 的單行程式打包器,或者 C 語言混亂代碼大賽這樣的東西,很多語言都有在一行代碼中玩出各種花樣的奇技淫巧。但我又注意到,這是一本 Python 的書。常識告訴我,沒有任何一本講 Python 的書敢違反至高無上的《Python 之禪》(尤其是“Readability counts”)。

果然,這本書講的正是我覺得十分重要,但一直少有專著的主題:如何寫出真正Pythonic 的單行程式。在這一主題下,作者從基礎出發,一步步增加挑戰。在我看來,他把這個問題在本書中分為幾個層次,按照挑戰難度及章節的前後順序教你:

1. 如何把你的每一行程式寫得簡潔漂亮、Pythonic。

2. 如何僅用一行程式,巧妙地解決實際問題,但又不會過分聰明以至於影響可讀性,並且滿足第一條。

3. 使用 Python 可以涉足計算機科學的哪些領域?全都用一行程式搞定,同時還得滿足前兩條。

《Python 之禪》有雲,達成某個任務的最佳編碼方式,有且僅有一種。這導致在Python 範疇內討論單行程式的威力,是需要極度謹慎的,因為即便再精妙和強大的單行程式,如果它不是“那一種”方式,就沒有人會在實踐中使用,也就只是個玩具,而沒有實用的價值。作者在選擇例子的時候十分小心,即使再複雜的例子,理解之後也會覺得,確實是最好的選擇。同時也會為之驚歎,短短一行,竟有如此強大的能力,就算是在機器學習、科學計算這種專業程度很高的領域也能遊刃有餘。

希望手頭的這本小書,能為 Python 玩家“打怪升級”提供一件稱心的裝備,做一盞指路明燈,驅散迷霧,打開地圖視野,明確職業生涯前進的路線。


目次

導語 ........................................................................................................................ 1

Python 一行流的例子 ................................................................................................... 2

關於可讀性的說明 ....................................................................................................... 3

這本書是給誰看的? ................................................................................................... 4

你會學到什麼? ........................................................................................................... 5

在線資源 ....................................................................................................................... 6

1 Python 溫故知新 ................................................................................................ 7

基本資料結構 ............................................................................................................... 8

數值資料類型和結構 ........................................................................................... 8

布林值 ................................................................................................................... 8

字串 ................................................................................................................. 11

關鍵字 None ....................................................................................................... 12

容器資料類型 ............................................................................................................. 13

列表 ..................................................................................................................... 13

堆疊 ..................................................................................................................... 16

集合 ..................................................................................................................... 17

字典 ..................................................................................................................... 19

成員 ..................................................................................................................... 20

XVIII Python 一行流

清單和字典解析 ................................................................................................. 20

控制流 ......................................................................................................................... 21

if、else 和 elif ..................................................................................................... 21

迴圈 ..................................................................................................................... 22

函數 ............................................................................................................................. 24

lambda 函數 ................................................................................................................. 24

總結 ............................................................................................................................. 25

2 Python 技巧 ..................................................................................................... 27

使用列表解析找出最高收入者 .................................................................................. 28

基礎背景 ............................................................................................................. 28

代碼 ..................................................................................................................... 30

它是如何工作的 ................................................................................................. 31

使用清單解析找出高信息價值的單詞 ...................................................................... 31

基礎背景 ............................................................................................................. 31

代碼 ..................................................................................................................... 32

它是怎麼工作的 ................................................................................................. 32

讀取文件 ..................................................................................................................... 33

基礎背景 ............................................................................................................. 33

代碼 ..................................................................................................................... 34

它是怎麼工作的 ................................................................................................. 34

使用 lambda 和 map 函數 ........................................................................................... 35

基礎背景 ............................................................................................................. 35

代碼 ..................................................................................................................... 36

它是如何工作的 ................................................................................................. 37

使用切片查找匹配子串及所處環境 .......................................................................... 38

基礎背景 ............................................................................................................. 38

代碼 ..................................................................................................................... 40

它是如何工作的 ................................................................................................. 41

目錄 XIX

列表解析和切片 ......................................................................................................... 41

基礎背景 ............................................................................................................. 42

代碼 ..................................................................................................................... 42

它是如何工作的 ................................................................................................. 43

使用切片賦值來修復損壞的列表 .............................................................................. 43

基礎背景 ............................................................................................................. 43

代碼 ..................................................................................................................... 44

它是如何工作的 ................................................................................................. 45

使用清單連接分析心臟健康資料 .............................................................................. 46

基礎背景 ............................................................................................................. 46

代碼 ..................................................................................................................... 48

它是如何工作的 ................................................................................................. 48

使用生成器運算式查出未達最低工資標準的公司 .................................................. 48

基礎背景 ............................................................................................................. 49

代碼 ..................................................................................................................... 49

它是如何工作的 ................................................................................................. 50

使用 zip()函數格式化資料庫 ..................................................................................... 51

基礎背景 ............................................................................................................. 51

代碼 ..................................................................................................................... 52

它是如何工作的 ................................................................................................. 53

總結 ............................................................................................................................. 54

3 資料科學 .......................................................................................................... 55

.....................................................................................................

4 機器學習 ........................................................................................................ 102

....................................................................................

5 規則運算式 .................................................................................................... 155

................................................................................

6 算法 ...........................................................................

...............................................................................................

後記 .................................................................................................................... 221


您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 465
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區