【廖雪峰課程筆記】之初識(shí)Python

第1章 Python變量與數(shù)據(jù)類型

1-1 Python中的基礎(chǔ)數(shù)據(jù)類型


一腌紧、整數(shù)
  • Python可以處理任意大小的整數(shù),包括整整數(shù)畜隶、負(fù)整數(shù)壁肋,表示方法與數(shù)學(xué)中的表示方法一樣。
二籽慢、浮點(diǎn)數(shù)
  • 浮點(diǎn)數(shù)浸遗,即小數(shù),可以用科學(xué)記數(shù)法和數(shù)學(xué)寫法表示箱亿;
  • 整數(shù)和浮點(diǎn)數(shù)在計(jì)算機(jī)內(nèi)部的存儲(chǔ)方式是不同的跛锌,整數(shù)運(yùn)算永遠(yuǎn)是精確的,浮點(diǎn)數(shù)運(yùn)算則可能會(huì)有四舍五入的誤差届惋。
三髓帽、字符串
  • 以 ‘ ’ 或 “ ” 括起來的任意文本。切記: ‘ ’ 和 “ ” 只是字符串的一種表示方式脑豹,并不是字符串的一部分郑藏。
四、布爾值
  • 一個(gè)布爾值只有 True 或 False (注意:大小寫)瘩欺,Python中可以直接使用 True 和 False 表示布爾值必盖,也可以通過布爾運(yùn)算計(jì)算出來;
  • 布爾運(yùn)算有3個(gè)運(yùn)算符:and or not俱饿。
五歌粥、空值
  • 空值是Python中的一個(gè)特殊字符,用 None 表示稍途,切記:None 與0的含義不一樣阁吝。

1-2 Python之Print語句


  • print 輸出指定的內(nèi)容;
  • 多個(gè)字符串時(shí)用逗號(hào)(,)隔開械拍,可以連成一串輸出突勇,print 打印時(shí)遇到逗號(hào)會(huì)輸出一個(gè)空格;
  • print 可以打印數(shù)值或數(shù)值運(yùn)算坷虑。

1-3 Python的注釋


  • 注釋是用來說明代碼作用的甲馋,程序運(yùn)行時(shí),python 解釋器會(huì)直接忽略掉注釋迄损;
  • Python 的注釋是以 “ # ” 開頭定躏,一直到行尾的文字;
  • 注釋的用途:不需要但又不想刪除的代碼,可以通過注釋暫時(shí)屏蔽痊远。

1-4 Python中什么是變量


  • 計(jì)算機(jī)程序中的變量垮抗,不僅可以是數(shù)值,也可以是任意的數(shù)據(jù)類型碧聪;
  • Python中冒版,變量是用一個(gè)變量名表示,變量名必須是大小寫英文逞姿、數(shù)字和下劃線(_)的組合辞嗡,且不能以數(shù)字開頭,區(qū)分大小寫滞造;
  • Python中续室,等號(hào)(=)是賦值語句,可以將任意類型的數(shù)據(jù)賦值給變量谒养,同一變量可以反復(fù)賦值挺狰,而且可以是不同類型的變量;
  • 變量類型不固定的語言是動(dòng)態(tài)語言买窟,如python她渴;靜態(tài)語言是指在定義變量時(shí)必須指定變量類型的語言,如java蔑祟;和靜態(tài)語言相比,動(dòng)態(tài)語言更加靈活沉唠。

1-5 Python中定義字符串


  • 當(dāng)字符串本身包含了‘ ’時(shí)疆虚,可以用“ ”括起來表示;當(dāng)字符串本身包含了“ ”時(shí)满葛,可以用‘ ’括號(hào)括起來表示径簿;
  • 當(dāng)字符串本身包含了‘ ’“ ”時(shí),需要對(duì)字符串中的特殊字符進(jìn)行轉(zhuǎn)義嘀韧,Python中使用\進(jìn)行轉(zhuǎn)義篇亭,在‘ ’“ ”前面插入\表示該字符為普通字符;
  • 轉(zhuǎn)義字符不計(jì)入字符串的內(nèi)容中锄贷,常見的需要轉(zhuǎn)義的字符:\n表示換行译蒂、\t表示一個(gè)制表符、\\表示字符串\本身谊却。

1-6 Python中raw字符串與多行字符串


  • 如果一個(gè)字符串中包含了多個(gè)需要轉(zhuǎn)義的字符柔昼,對(duì)每一個(gè)都加轉(zhuǎn)義符會(huì)很麻煩,通過在字符串前面加 r 表示這是一個(gè)raw字符串炎辨,里面的特殊字符就不需要轉(zhuǎn)義了捕透;
  • r ‘…’ 表示法,不能表示多行字符串,也不能表示包含‘ ’“ ”的字符串乙嘀;
  • ‘“.....”’表示法末购,可以表示多行字符串,也是一個(gè) raw 字符串虎谢,可以表示上述說的情況盟榴。

1-7 Python中Unicode字符串


  • 計(jì)算機(jī)只能處理數(shù)值,若要處理文本嘉冒,需要先將文本轉(zhuǎn)換為數(shù)字才能處理曹货。0-255用來表示大小寫英文字母、數(shù)字和特殊符號(hào)讳推,被稱為ASCII編碼顶籽;
  • 中國(guó)制定了GB2312用來將中文編碼進(jìn)去,且不能和ASCII編碼沖突银觅,類似的日本礼饱、韓國(guó)也存在類似的問題,為了統(tǒng)一所有文字的編碼究驴,Unicode編碼應(yīng)運(yùn)而生镊绪;
  • Python的誕生比ASCII編碼要早,所以最早的Python僅支持ASCII編碼洒忧,后來添加了支持Unicode編碼蝴韭,以Unicode編碼的字符用u‘…’表示,不加 u 則中文無法正常顯示熙侍;
  • Unicode字符串除了多了一個(gè)u以外榄鉴,與普通字符串沒有區(qū)別,轉(zhuǎn)義字符和多行表示法仍然有效蛉抓;
  • 在Python環(huán)境中庆尘,若出現(xiàn)了UnicodeDecodeError是因?yàn)?code>.py文件保存的格式有問題,可以在代碼的第一行添加注釋# -*- coding: utf-8 -*- 目的是告訴Python解釋器用UTF-8編碼解讀源碼巷送。

1-8 Python中整數(shù)與浮點(diǎn)數(shù)


  • Python支持整數(shù)與浮點(diǎn)數(shù)的四則運(yùn)算驶忌,和數(shù)學(xué)四則運(yùn)算一致,可以使用括號(hào)嵌套笑跛;
  • 不同點(diǎn):Python3中除法運(yùn)算結(jié)果永遠(yuǎn)是浮點(diǎn)數(shù)付魔、浮點(diǎn)數(shù)運(yùn)算結(jié)果仍是浮點(diǎn)數(shù),但是浮點(diǎn)數(shù)與整數(shù)的混合運(yùn)算結(jié)果為浮點(diǎn)數(shù)飞蹂;
  • Python一定要區(qū)分整數(shù)運(yùn)算和浮點(diǎn)數(shù)運(yùn)算的原因:整數(shù)運(yùn)算的結(jié)果永遠(yuǎn)是精確的抒抬,而浮點(diǎn)數(shù)運(yùn)算的結(jié)果不一定是準(zhǔn)確的,因?yàn)橛?jì)算機(jī)內(nèi)存再大也無法精確表示出無限循環(huán)小數(shù)晤柄;
  • Python提供了一個(gè)求余數(shù)的運(yùn)算%可以計(jì)算余數(shù)擦剑。

1-9 Python中布爾類型


  • 布爾運(yùn)算在計(jì)算機(jī)中用來做條件判斷,根據(jù)計(jì)算結(jié)果為 True 或 False 自動(dòng)執(zhí)行后續(xù)的代碼;
  • 在Python中惠勒,布爾運(yùn)算可以與其他數(shù)據(jù)類型做 and \ or \ not 運(yùn)算赚抡;
  • Python將 0 、空字符串 ‘ ’ 纠屋、None均看作是 False 涂臣,將其它數(shù)值和非空字符串均看作是 True ;
  • and 和 or 運(yùn)算時(shí)的短路原則:Python解釋器在做布爾運(yùn)算時(shí)售担,只要能提前確定計(jì)算結(jié)果赁遗,則不再執(zhí)行后續(xù)代碼,直接返回結(jié)果族铆。

第2章 List 和 Tuple 數(shù)據(jù)類型

2-1 Python創(chuàng)建list


  • list是一種數(shù)學(xué)意義上的有序集合岩四,用[ ]表示,可以隨時(shí)添加和刪除其中的元素哥攘;
  • Python是一種動(dòng)態(tài)語言剖煌,list中的元素并不要求都是同一種數(shù)據(jù)類型,可以包含各種類型的數(shù)據(jù)逝淹,也可以是空的耕姊。

2-2 Python按照索引訪問list


  • 索引即元素在list中的位置,list的索引是從第0位開始的栅葡,第二個(gè)元素是第1位茉兰,以此類推;
  • 注意:使用索引時(shí)欣簇,千萬不能越界邦邦,否則會(huì)報(bào)錯(cuò)。通常使用切片來訪問元素醉蚁,即list[索引值]。

2-3 Python之倒序訪問list


  • 倒序訪問時(shí)鬼店,最后一位元素的索引是從-1開始的网棍,倒數(shù)第二位是-2,以此類推妇智,切記:使用倒序索引時(shí)不能越界滥玷。

2-4 Python之list添加新元素


  • 方法一:list.append():總是將元素追加至list尾部;
  • 方法二:list.insert(index, name):將指定的元素name添加至指定索引index的位置巍棱,該索引之后的元素自動(dòng)向后移動(dòng)惑畴。

2-5 Python之list刪除元素


  • list.pop():默認(rèn)總是刪除list中最后一個(gè)元素,當(dāng)需要?jiǎng)h除指定索引的元素時(shí)航徙,用list.pop(index)來指定索引如贷;
  • pop()的結(jié)果是返回本次刪除的元素,同時(shí)list中的指定元素會(huì)被刪除。

2-6 Python之替換list元素


  • 對(duì)list中的元素進(jìn)行更新杠袱,通過切片的方法對(duì)list的索引進(jìn)行賦值尚猿,即可實(shí)現(xiàn)新元素代替原來元素,list元素個(gè)數(shù)保持不變楣富。

2-7 Python之創(chuàng)建Tuple


  • Tuple是一種有序的集合凿掂,用( )表示,和list類似纹蝴,但Tuple一旦創(chuàng)建后庄萎,不可修改;
  • 訪問Tuple的方法和list一樣通過索引切片即可塘安,但不能賦值成別的元素糠涛,更沒有append()/pop()/insert()等函數(shù)。

2-8 Python之單元素Tuple


  • Tuple和list一樣耙旦,可以包含任意個(gè)元素脱羡,空Tuple用Tuple()表示;
  • ( )既可以表示tuple免都,也可以作為括號(hào)表示運(yùn)算時(shí)的優(yōu)先級(jí)锉罐,單個(gè)元素時(shí)會(huì)被Python解釋器認(rèn)為是元素,而非tuple绕娘;
  • 因?yàn)槭褂? )表示Tuple存在歧義脓规,Python規(guī)定:?jiǎn)卧豻uple時(shí)需要在元素后加一個(gè)逗號(hào) “,” 。多元素tuple時(shí)可以不加险领;

2-9 Python之可變Tuple


  • Tuple的不可變是指其元素指向不變侨舆,即指向了元素 a 就不能指向元素 b ,指向了list1就不能再指向list2绢陌;
  • 當(dāng)Tuple中的所有元素本身是不可變時(shí)挨下,Tuple是不可變的;當(dāng)可變?cè)厝鏻ist作為Tuple的元素時(shí)脐湾,list中的元素是可變的臭笆,可以變相地實(shí)現(xiàn)Tuple可變。

第3章 條件判斷和循環(huán)

3-1 Python之if語句


  • if 語句用于控制程序的執(zhí)行秤掌,"判斷條件"成立時(shí)愁铺,則執(zhí)行后面的語句,執(zhí)行內(nèi)容可以多行闻鉴,以縮進(jìn)來區(qū)分同一范圍茵乱;
  • if后接表達(dá)式,用冒號(hào)(:)表示代碼塊開始孟岛,Python代碼的縮緊規(guī)則:具有相同縮進(jìn)的代碼視為代碼塊瓶竭,縮進(jìn)時(shí)的習(xí)慣:4個(gè)空格鍵督勺,不要用Tab鍵、不要Tab鍵與空格混用在验;

3-2 Python之if-else語句


  • 利用if......else語句玷氏,可以根據(jù)條件表達(dá)式的值為True或False,分別執(zhí)行if代碼塊腋舌,或else代碼塊壳坪,else后面要緊跟冒號(hào)(:)钉稍;
  • 大于號(hào)(>)和小于號(hào)(<)在沒有括號(hào)的情況下會(huì)比andor優(yōu)先判斷。

3-3 Python之for循環(huán)


  • for循環(huán):重復(fù)執(zhí)行語句,依次將集合序列中的元素逐個(gè)取出囊扳,并賦值給指定的變量泣棋;
  • for……else循環(huán):和普通的for循環(huán)一樣隘道,else語句會(huì)在代碼正常執(zhí)行完后執(zhí)行赌渣,而非因break中斷跳出。

3-4 Python之while循環(huán)


  • while循環(huán):在給定的判斷條件為true 時(shí)執(zhí)行循環(huán)體淮腾,否則退出循環(huán)體糟需;
  • while……else循環(huán),是在判斷條件為False時(shí)執(zhí)行else代碼語句谷朝;
  • while循環(huán)的判斷條件總為真時(shí)洲押,會(huì)無限執(zhí)行下去,變成死循環(huán)圆凰,因此要注意while循環(huán)的退出條件杈帐;

3-5 Python之循環(huán)控制語句


  • break語句:終止for循環(huán)或while循環(huán),并且跳出整個(gè)循環(huán)专钉,即使循環(huán)條件沒有False或序列還沒被完全循環(huán)完挑童;
  • continue語句:跳出for循環(huán)或while循環(huán)本次的循環(huán),即跳過當(dāng)前循環(huán)剩下的代碼語句跃须,繼續(xù)進(jìn)行下一輪循環(huán)站叼;
  • pass語句:空語句,不做任何事情菇民,用做占位語句保持程序結(jié)構(gòu)的完整性尽楔,通常用在定義類時(shí)使用。

3-6 Python之多重循環(huán)


  • Python語言中玉雾,允許一個(gè)循環(huán)中嵌套另外一個(gè)循環(huán),如for循環(huán)中嵌套for循環(huán)轻要、while循環(huán)中嵌套for循環(huán)复旬。

第4章 Dict和Set數(shù)據(jù)類型

4-1 Python之什么是dict


  • dict:一種鍵值對(duì)組成的無序集合,即索引(key)和對(duì)應(yīng)值(value)冲泥,用花括號(hào){ }表示驹碍,鍵與值之間用冒號(hào)(:)連接壁涎,一個(gè)key:value算一個(gè)元素,元素之間用逗號(hào)(,)連接志秃;
  • dict的元素是通過key進(jìn)行存取怔球,而非list的索引存取,所以dict的key必須是唯一的浮还,但是value不必唯一竟坛。

4-2 Python之訪問dict


  • dict通過切片的方法:d[key]來訪問dict的元素,和list的方法類似钧舌,只要key存在則返回對(duì)應(yīng)的value担汤,若不存在則報(bào)錯(cuò)KeyError;
  • 若避免出現(xiàn)KeyError的情況洼冻,可以通過if進(jìn)行判斷崭歧,也可以通過dict自帶的方法,dict.get(key)進(jìn)行訪問dict撞牢,若key不存在則返回None率碾。

4-3 Python中dict的特點(diǎn)


  • 特點(diǎn)一:查找速度快,無論dict有10個(gè)元素還是10萬個(gè)屋彪,速度都一樣所宰,而list是隨著元素個(gè)數(shù)的增多而逐漸下降。對(duì)應(yīng)的缺點(diǎn):占用內(nèi)存多撼班,浪費(fèi)資源歧匈;
  • 特點(diǎn)二:存儲(chǔ)的元素key:value是無序的,打印輸出的順序和創(chuàng)建的順序不一定一樣砰嘁,不同的機(jī)器打印出來的順序也可能不一樣件炉;
  • 特點(diǎn)三:作為key的元素必須是不可變的,list不能作為key矮湘,最常用的是字符串斟冕。

4-4 Python之更新dict


  • dict[key] = value可以將指定的元素添加到dict,若已存在相同的key值缅阳,則替換原有的元素磕蛇;
  • dict.clear():刪除dict中的所有元素;
  • dict.update(dict1):將dict1添加到dict中十办;
  • dict.pop(key):刪除dict中指定key的元素秀撇,并返回該key對(duì)應(yīng)的value;
  • dict.popitem():隨機(jī)刪除dict中的一個(gè)元素(鍵值對(duì))向族,一般為末尾呵燕,并返回刪除的鍵值對(duì)。

4-5 Python之遍歷dict


  • dict和list一樣件相,都是序列再扭,通過for循環(huán)或while循環(huán)可以遍歷其中的元素氧苍;
  • dict.keys():以列表形式返回dict所有的鍵組成的可迭代對(duì)象,dict通過對(duì)key的遍歷可以在循環(huán)體內(nèi)返回對(duì)應(yīng)的value泛范;
  • dict.values():以列表的形式让虐,返回dict所有的值組成的可迭代對(duì)象;
  • dict.items():以列表的形式罢荡,返回由key與value組成的Tuple構(gòu)成的可迭代對(duì)象赡突。
  • 字典的keys()函數(shù)和items()函數(shù),返回的均是視圖對(duì)象柠傍,支持集合的交麸俘、并、差等運(yùn)算惧笛,但是values()函數(shù)不支持从媚。

4-6 Python中什么是set


  • set:無序不重復(fù)的數(shù)據(jù)集合,類似于dict的key患整,基本功能:關(guān)系測(cè)試拜效、刪除重復(fù)元素;
  • 創(chuàng)建set:調(diào)用set()并傳入一個(gè)list各谚,set([list])紧憾,其打印形式類似list,但結(jié)果無序昌渤;
  • 當(dāng)傳入set()的list中存在重復(fù)元素時(shí)赴穗,set()的結(jié)果會(huì)自動(dòng)忽略掉重復(fù)的元素;
  • 不支持切片和索引膀息;
  • 支持一系列標(biāo)準(zhǔn)操作:并集(|)般眉、交集(&)、差集(-)潜支、對(duì)稱差集(^)

4-7 Python之訪問set


  • 由于set中的元素是無序的甸赃,無法通過索引來訪問,訪問set中的元素實(shí)際上就是判斷一個(gè)元素是否在set中冗酿;
  • 在進(jìn)行元素判斷時(shí)埠对,特別注意要區(qū)分英文字母的大小寫;

4-8 Python之set的特點(diǎn)


  • 特點(diǎn):set的內(nèi)部結(jié)構(gòu)和dict很像裁替,運(yùn)算速度快项玛、set的元素和dict的key類似,必須是不變對(duì)象弱判、set的元素是無序存儲(chǔ)襟沮;
  • 用途:判斷用戶輸入的星期/月份是否是合法的,通過提前設(shè)定的set集合,通過一步判斷即可快速實(shí)現(xiàn)臣嚣。

4-9 Python之遍歷set


  • set是一個(gè)集合,遍歷set和遍歷list類似剥哑,都可以通過for循環(huán)實(shí)現(xiàn)硅则,其結(jié)果的順序和set中元素的順序很可能不同,不同機(jī)器上的運(yùn)行結(jié)果很可能也不同株婴。

4-10 Python之更新set


  • 更新set元素:把新的元素添加到set 中怎虫、把已有元素從set中刪除;
  • set.add(name):將新元素name添加到set中困介,若set 中已存在name大审,則無法添加進(jìn)去,但是不會(huì)報(bào)錯(cuò)座哩;
  • set.remove(name):將指定元素name從set 中刪除徒扶,若set中不存在name,則會(huì)報(bào)錯(cuò)根穷,需要提前做判斷姜骡。

第5章 函數(shù)

5-1 Python之什么是函數(shù)


  • 抽象是數(shù)學(xué)中最常見的概念,借助抽象我們不必關(guān)注底層的具體計(jì)算過程屿良,直接在更高的層次上思考問題圈澈,寫計(jì)算機(jī)程序也一樣,函數(shù)就是最基本的一種代碼抽象尘惧。Python不僅能輕松靈活地定義函數(shù)康栈,本身也內(nèi)置了很多有用的函數(shù),可以調(diào)用喷橙;
  • 函數(shù):指組織好的啥么,可重復(fù)使用的,用來實(shí)現(xiàn)單一或相關(guān)功能的代碼段重慢。函數(shù)能提高應(yīng)用的模塊性和代碼的重復(fù)利用率饥臂。

5-2 Python之調(diào)用函數(shù)


  • 調(diào)用函數(shù),需要知道函數(shù)的名稱和參數(shù)似踱,可以在交互命令行通過help(name)查看函數(shù)的信息隅熙;
  • 調(diào)用函數(shù)時(shí):1)若傳入的參數(shù)數(shù)量不對(duì),會(huì)報(bào)TypeError錯(cuò)誤核芽,并給出信息:該函數(shù)需要幾個(gè)參數(shù)囚戚,卻提供了幾個(gè)參數(shù);2)若傳入的參數(shù)類型不能被函數(shù)接受轧简,也會(huì)報(bào)TypeError錯(cuò)誤驰坊,并給出信息:是錯(cuò)誤的參數(shù)類型;

5-3 Python之編寫函數(shù)


  • 定義一個(gè)函數(shù)哮独,使用def語句拳芙,依次寫出函數(shù)名察藐、括號(hào)、括號(hào)中的參數(shù)舟扎、冒號(hào)分飞,然后在縮進(jìn)塊中編寫函數(shù)體,return語句用來退出函數(shù)睹限,選擇性地向調(diào)用方返回一個(gè)表達(dá)式或數(shù)值譬猫;
  • 函數(shù)體內(nèi)部的語句在執(zhí)行時(shí),一旦執(zhí)行到return語句羡疗,函數(shù)就執(zhí)行完畢染服,并返回結(jié)果;若沒有return語句叨恨,函數(shù)執(zhí)行完畢后會(huì)返回None柳刮。

5-4 Python函數(shù)之返回多個(gè)值


  • Python函數(shù)返回多個(gè)值,其實(shí)是返回一個(gè)Tuple痒钝,在語法上诚亚,返回tuple可以省略括號(hào)寫起來方便,多個(gè)變量可以同時(shí)接受一個(gè)tuple午乓,按位置賦給對(duì)應(yīng)的值站宗。

5-5 Python之遞歸函數(shù)


  • 若一個(gè)函數(shù)在內(nèi)部調(diào)用了該函數(shù)本身,則稱為遞歸函數(shù)益愈。其優(yōu)點(diǎn):定義簡(jiǎn)單梢灭、邏輯清晰,理論上所有的遞歸函數(shù)都可以寫成循環(huán)函數(shù)蒸其;
  • 使用遞歸函數(shù)要防止棧溢出敏释。計(jì)算機(jī)中,函數(shù)調(diào)用是通過棧(stack)這種數(shù)據(jù)結(jié)果實(shí)現(xiàn)的摸袁,每進(jìn)入一個(gè)函數(shù)調(diào)用钥顽,棧會(huì)加一層棧幀,每當(dāng)函數(shù)返回棧就會(huì)減少一幀靠汁,由于棧的大小不是無限循環(huán)蜂大,遞歸調(diào)用的次數(shù)過多時(shí)會(huì)導(dǎo)致棧溢出。

5-6 Python之定義默認(rèn)參數(shù)


  • 調(diào)用函數(shù)時(shí)蝶怔,可以使用的正式參數(shù)類型:必需參數(shù)奶浦、關(guān)鍵字參數(shù)、默認(rèn)參數(shù)踢星、可變參數(shù)澳叉;
  • 必需參數(shù):以正確的順序傳入?yún)?shù),調(diào)用時(shí)和聲明時(shí)必須一致;
  • 關(guān)鍵字參數(shù):函數(shù)調(diào)用使用關(guān)鍵字參數(shù)來確定轉(zhuǎn)入的參數(shù)值成洗;
  • 默認(rèn)參數(shù):默認(rèn)參數(shù)的作用是簡(jiǎn)化函數(shù)調(diào)用(定義時(shí)默認(rèn)設(shè)置五督,調(diào)用時(shí)不用傳參),只能定義在必需參數(shù)的后面瓶殃;

5-7 Python之定義可變參數(shù)


  • 若讓一個(gè)函數(shù)可以接受任意個(gè)參數(shù)概荷,可以定義一個(gè)可變參數(shù),用星號(hào)(*) + 變量名表示碌燕,該變量會(huì)存入所有未命名的參數(shù),Python會(huì)將轉(zhuǎn)入的一組參數(shù)封裝成一個(gè)tuple專遞給該可變參數(shù)继薛,函數(shù)調(diào)用沒有指定參數(shù)時(shí)修壕,該變量是空tuple。

第6章 切片

6-1 Python之切片操作


  • Python提供了切片(slice)功能遏考,用來簡(jiǎn)化取指定索引范圍的操作慈鸠,通常用來對(duì)list和tuple進(jìn)行提取元素;
  • list[0:n]表示從索引0開始取灌具,直到索引n為止青团,但是不包括索引n,當(dāng)?shù)谝粋€(gè)索引是0時(shí)咖楣,可以簡(jiǎn)寫:list[:n]督笆;
  • list[n:]表示從索引n開始取,取之后所有的元素诱贿;
  • list[:]表示從頭到尾取出所有元素娃肿,實(shí)際上相當(dāng)于復(fù)制出了一個(gè)新list;
  • list[m:n:s]表示從索引m開始珠十,到索引n(不包含)結(jié)束料扰,步長(zhǎng)間隔為s;
  • 取多個(gè)元素時(shí)焙蹭,切片右邊界值n表示索引為n(不包含)晒杈,返回的是索引為n-1的元素,因?yàn)樗饕菑?開始孔厉,所以返回的是序列中第n個(gè)元素拯钻;
  • 取單個(gè)元素時(shí),切片值n表示索引為n撰豺,因?yàn)樗饕菑?開始说庭,所以返回的是序列中第n+1位元素。

6-2 Python之倒序切片


  • Python的切片提供了倒序切片郑趁,list最后一個(gè)元素的索引是 -1刊驴,倒序切片方法和正序除了索引不用,用法完全一樣;
  • list[-n:-m]表示從索引-n開始取捆憎,直到索引到為-m為止舅柜,但是不包括索引為-m,當(dāng)-n后所有元素都取完時(shí)躲惰,可以簡(jiǎn)寫:list[-n:]致份;
  • list[:-n]表示從最開始取,直到索引為-n為止础拨,但是不包含-n氮块;
  • 取多個(gè)元素時(shí),切片右邊界為-n表示索引為-n(不包含)诡宗,返回的是序列中倒數(shù)第-(n+1)個(gè)元素
  • 取單個(gè)元素時(shí)滔蝉,切片值為-n表示索引為-n,返回的是序列中倒數(shù)第n個(gè)元素塔沃;

6-3 Python之字符串切片


  • 字符串’xxx’和Unicode字符串u‘xxx’也可以看作是一個(gè)list蝠引,每個(gè)字符是一個(gè)元素,也可以進(jìn)行切片操作蛀柴,操作結(jié)果仍是字符串螃概。

第7章 迭代

7-1 Python之什么是迭代


  • 集合是指包含一組元素的數(shù)據(jù)結(jié)構(gòu),如:有序集合list/tuple/str/unicode鸽疾、無序集合set/dict吊洼;
  • 迭代(iteration)操作:對(duì)于一個(gè)集合,無論是否有序制肮,通過for循環(huán)都可以依次取出集合的每個(gè)元素融蹂。

7-2 Python之索引迭代


  • 在Python中,迭代永遠(yuǎn)是取元素本身弄企,而非元素的索引超燃;
  • enumerate():將可遍歷的數(shù)據(jù)對(duì)象(如list/tuple/str)組合為一個(gè)由索引及對(duì)應(yīng)元素組成的tuple;
  • 索引迭代拘领,并非真的按照索引進(jìn)行訪問意乓,而是由enumerate函數(shù)把每個(gè)元素變成Tuple(index,element),再進(jìn)行for循環(huán)约素,遍歷出索引及元素本身届良;
  • enumerate(sequence, [start=0])函數(shù)的默認(rèn)參數(shù)start可以指定起始索引的值為0或1。

7-3 Python之迭代dict的value


  • dict對(duì)象本身是可迭代對(duì)象圣猎,但每次迭代的是dict的key士葫,通過dict.value()方法可以將dict的所有value組成一個(gè)list進(jìn)行迭代;
  • dict.itervalues()dict.value()的迭代效果一樣送悔,區(qū)別:后者是新生成了list慢显,而前者不作轉(zhuǎn)換爪模,所以更省內(nèi)存;
  • 迭代是一種抽象的操作荚藻,任何可迭代對(duì)象都可以進(jìn)行for循環(huán)屋灌,我們不關(guān)心內(nèi)部是如何迭代的,它不對(duì)迭代對(duì)象內(nèi)部的數(shù)據(jù)有任何要求应狱。

7-4 Python之迭代dict的key和value


  • dict.items():以列表的形式返回由dict的key和value組成的Tuple共郭。items()函數(shù)配合for循環(huán)即可遍歷dict的key和value。

第8章 推導(dǎo)式

8-1 Python 之推導(dǎo)式


  • 推導(dǎo)式comprehensions(又稱解析式)疾呻,是Python的一種獨(dú)有特性除嘹;
  • 推導(dǎo)式是從一個(gè)數(shù)據(jù)序列構(gòu)建另一個(gè)新的數(shù)據(jù)序列的結(jié)構(gòu)體;
  • 在Pyhton2和3中岸蜗,都支持推導(dǎo)式尉咕,有3種類型:1)列表(list)推導(dǎo)式;2)字典(dict)推導(dǎo)式散吵;3)集合(set)推導(dǎo)式。

8-2 列表推導(dǎo)式


  • 使用中括號(hào)[]生成列表蟆肆,for循環(huán) + if判斷矾睦,當(dāng)if判斷結(jié)果為True時(shí),把循環(huán)的當(dāng)前元素進(jìn)行表達(dá)式運(yùn)算炎功,添加到列表中枚冗;
  • 示例:[x * x for x in range(1, 11) if x % 2 == 0] = [4, 16, 36, 64, 100]
  • 多層推導(dǎo)式:使用for循環(huán)嵌套生成列表,示例:[m + n for m in 'ABC' for n in '123’] = ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3’]
  • 將中括號(hào)替換成小括號(hào)蛇损,得到一個(gè)生成器generator

8-3 字典推導(dǎo)式


  • 字典推導(dǎo)和列表推導(dǎo)使用方法是類似的赁温,需要將中括號(hào)該改成大括號(hào)
  • 示例:dict1 = {"xz":12, "sm":34},{k:v for k, v in dict1.items() if v % 3 == 0} —> {'xz': 12}
  • 該方法可以快速更換dict的key和values

8-4 集合推導(dǎo)式


  • 集合推導(dǎo)和列表推導(dǎo)的使用方法是類似的淤齐,需要將中括號(hào)該改成大括號(hào)
  • 示例:{x**2 for x in [1, 1, 2]} —> {1, 4}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末股囊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子更啄,更是在濱河造成了極大的恐慌稚疹,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祭务,死亡現(xiàn)場(chǎng)離奇詭異内狗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)义锥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門柳沙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拌倍,你說我怎么就攤上這事赂鲤≡刖叮” “怎么了?”我有些...
    開封第一講書人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵蛤袒,是天一觀的道長(zhǎng)熄云。 經(jīng)常有香客問我,道長(zhǎng)妙真,這世上最難降的妖魔是什么缴允? 我笑而不...
    開封第一講書人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮珍德,結(jié)果婚禮上练般,老公的妹妹穿的比我還像新娘。我一直安慰自己锈候,他們只是感情好薄料,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著泵琳,像睡著了一般摄职。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上获列,一...
    開封第一講書人閱讀 51,775評(píng)論 1 307
  • 那天谷市,我揣著相機(jī)與錄音,去河邊找鬼击孩。 笑死迫悠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的巩梢。 我是一名探鬼主播创泄,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼括蝠!你這毒婦竟也來了鞠抑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤忌警,失蹤者是張志新(化名)和其女友劉穎碍拆,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體慨蓝,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡感混,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了礼烈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弧满。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖此熬,靈堂內(nèi)的尸體忽然破棺而出庭呜,到底是詐尸還是另有隱情滑进,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布募谎,位于F島的核電站扶关,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏数冬。R本人自食惡果不足惜节槐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拐纱。 院中可真熱鬧铜异,春花似錦、人聲如沸秸架。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽东抹。三九已至蚂子,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缭黔,已是汗流浹背食茎。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留试浙,地道東北人董瞻。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓寞蚌,卻偏偏與公主長(zhǎng)得像田巴,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子挟秤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

推薦閱讀更多精彩內(nèi)容

  • 最近的天氣一直是高溫壹哺,每天都很熱!雖然靳老師回來了艘刚,但是也不進(jìn)班級(jí)的管宵,依然是我一個(gè)人帶班,上下午攀甚,中午還要開...
    偉澤澤媽閱讀 142評(píng)論 0 0
  • # 奇談雜閱#情緒讓人沖動(dòng)箩朴,沖動(dòng)的行為盡管短暫而迅速,但很快還是會(huì)被理性追上秋度。 有很多內(nèi)容可以喚起情緒炸庞,在沖動(dòng)的情...
    奇妙的奇閱讀 109評(píng)論 0 0
  • 代碼: 默認(rèn)左右橫向排列,效果: 代碼: 主軸方向居中荚斯,效果: 代碼: 主軸方向靠右排列埠居,效果: 代碼: 側(cè)軸居中...
    李悅之閱讀 708評(píng)論 0 0