第5章 條件呛伴、循環(huán)和其他語句
和其他語句.png)
第5章 條件涤伐、循環(huán)和其他語句
5.1print和import的更多信息
print語句可以同時打印多個表達式馒胆,只需要用逗號分隔即可,print語句最后添上逗號表明不換行废亭。若要連接逗號需使用+符號
import語句完整用法可以是 from Module import sth as sth
有些模塊比如os.path是分層次安排的(一個模塊在另一個模塊里)
5.2賦值魔法
變量賦值時可以使用序列解包国章,即將多個值的序列解開,然后放到變量的序列中豆村,當函數(shù)或者方法返回元組(或者其他序列或可迭代對象)時液兽,這個特性特別有用
5.3語句塊:縮排的快樂
Python中冒號用來表示語句塊的開始,縮進推薦使用4個空格
5.4條件和條件語句
elif是else if的縮寫
包含一個空格的字符串并非空
最好不要比較兩個不兼容的類型掌动,Python中比較運算符是可以連接的四啰,如if(0<a<5):
is運算符是同一運算符,只有兩個對象的引用是一樣時才為真
字符串和序列按照字母順序進行比較
assert斷言語句類似于if粗恢,可以在程序中設置檢查點柑晒,一旦為假,則產(chǎn)生異常眷射,崩潰
5.5循環(huán)
xrange函數(shù)作用類似于range函數(shù)匙赞,只是range函數(shù)一次創(chuàng)建整個序列,而xrange一次值創(chuàng)建一個數(shù)妖碉,有時更高效
Python中迭代序列時涌庭,有些函數(shù)很常用,比如itertools模塊中的一些函數(shù)欧宜,一些迭代技巧:
并行迭代是指可以同時迭代兩個列表坐榆,如for i in range(len(list1))。內(nèi)建的zip函數(shù)可以用來把兩個序列壓縮在一起冗茸,然后返回一個元組的列表席镀,如for l1,l2 in zip(list1,list2).zip可以自動處理不等長的序列
編號迭代是在迭代的同時獲得當前對象的索引匹中,內(nèi)建enumerate函數(shù)可以做到:for index,string in enumerate(strings)
翻轉(zhuǎn)和排序迭代,即sorted和reversed函數(shù)豪诲,前者返回一個列表顶捷,后者返回一個可迭代對象
5.6列表推導式:輕量級微循環(huán)
列表推導式是利用其它列表創(chuàng)建新列表的一種方法,基本方式如下:[x*x for x in range(10) if x%3=0]a=[(x,y) for x in range(10) for y in range(5) if x%2==0 if y%2!=0]
5.7三人行
pass語句和注釋聯(lián)合使用的替代方案是插入字符串跛溉,對于那些沒有完成的函數(shù)和類來說這個方法很有用
del語句用來刪除一個變量對內(nèi)存的引用焊切,但是這個引用并沒有顯式刪除扮授,由Python解釋器負責內(nèi)存的回收
exec胡用于執(zhí)行Python語句芳室,eval能計算Python表達式,但這樣做可能留下安全漏洞刹勃。均可以使用命名空間堪侯。如:scope={};exec 'sqrt=1' in scope