python學習筆記(四)、條件、循環及其他語句
1 再談print和import
1.1 打印多個參數
print 能夠同時打印多個表達式,並且能自定義分隔符。如下:
print(‘a‘,‘b‘,‘c‘) ——> a b c
print(‘a‘,‘b‘,‘c‘,sep="_") ——> a_b_c
1.2 import
導入模塊時,能夠給導入的模塊取一個別名(相對於生活中的小名,不管怎麽叫,還是你而已),方法是在語句末尾添加 as 子句並指定別名。
import math as foobar
from pi import math as PI
2 賦值
即便是不起眼的賦值語句也蘊含著一些敲門。
2.1 序列解包
python 能夠同時(並行)給多個變量賦值。如 x,y,z = 1,2,3 x,y = y,x 。這樣的操作我們稱之為序列解包(或可叠代對象解包):將一個序列(任何可叠代對象)解包,並將得到的值存儲到一系列變量中。值得註意的是,要解包的序列包含的元素個數必須與你在等號左邊列出的目標個數相同,否則python將引發異常。
如果你想要收集要解包的序列包含的元素多余值,可以使用星號運算符( * )來收集,這樣無需確保值和變量的個數相同。如:
a, *b , c = (1, 2, 3, 4) ——> b = [2, 3]
2.2 鏈式賦值
將多個變量關聯到同一個值。如:x = y = fn1()
2.3 增強賦值
可以不編寫代碼x = x + 1,而將右邊表達式中的運算符移到賦值運算符( = )的前面,從而寫成 x += 1。這稱為增強賦值。適用於所有標準運算符,如+、-、* 、%等。
3 代碼塊
代碼塊是一組語句,可在滿足條件時執行(if語句),可執行多次(循環),等等。代碼塊是通過縮進代碼(即在前面加空格)來創建的。如:
while True:
....
....
4 條件和條件語句
4.1 這正是布爾值得用武之地
用作布爾表達式時,下面的都將被解釋器視為假
False None 0 "" () ‘‘ [] {}
換而言之,標準值False和None、各種類型的數值0、空序列以及空映射都被視為假,其他各種值都被視為真。
布爾值True和False屬於類型bool,與list、str、tuple和dict一樣,都可以用來轉換其他值。如bool("aa") ——> True
4.2 if...else / if...elif...elif...else語句
if 語句能夠讓你有條件的執行代碼。並且if 條件語句中能夠通過代碼塊嵌套if語句。
4.3 更復雜的條件
4.3.1 比較運算符
常見的比較運算符有==、<、> 、!= 等,python中還可以用is、in來比較對象。
x is y x和y是同一個對象時返回True
x is not y x和y不是同一個對象時返回True
x in y x是容器(如序列)y的成員時返回True
x not in y x不是容器(如序列)y的成員時返回True
還能夠進行鏈式標記,如 1 <= number < 20。
4.3.2 布爾運算符
and 、or 和 not。and表示同時滿足兩個條件才為True; or表示只有有一個條件滿足就為True,否則為False; not表示相反。布爾運算符有個有趣的特征:只做必要的技術,也就是常說的短路,即短路邏輯(或延遲求值)。
4.4 斷言
關鍵字 assert ,當條件滿足時執行,不滿足時程序異常退出,一般用於程序中的檢查點。
5 循環
使程序多次執行。
5.1 while循環
while 條件:
......
當滿足條件的時候,執行程序塊。
5.2 for 循環
for a1 in list1:
......
對可叠代的對象(如序列)進行遍歷。
5.3 叠代字典
for key in dict1:
dict1[key]......
5.4 一些叠代工具
5.4.1 並行叠代
有時候你可能想同時叠代兩個序列,python提供了一個內置函數 zip ,它將兩個序列 “縫合” 起來,並返回一個由元祖組成的序列。如:
list(zip(names,ages)) ——> [(name1,age1),(name2,age2).....]
值得註意的是,zip 比不需要兩個序列的長度len相等,zip只取兩個序列長度的最小值,即ziplen = min((len(names),len(ages)))。
5.4.2 叠代時獲取索引
python 提供了一個內置函數enumerate。能夠在叠代的時候獲取到序列項的索引值。如:
for index,ages in enumarate(ages):
.......
enumerate函數相當於把序列轉為一個dict字典類型。key為index,value為序列對應的值。
5.4.3 方向叠代和排序後再叠代
使用函數:reversed和sorted。
5.5 跳出循環
在編碼過程中,有時候只要當滿足一定條件才能執行循環、跳出循環等。
5.5.1 break
跳出當前循環。並且能夠在循環中添加一條else子句,它表示在沒有調用break 時才執行。如:
for age in ages:
if age > 10 :
break
else:
print("ages中年齡全部都小於等於10")
5.5.2 continue
表示結束當前叠代,並跳到下一次叠代開頭。即意味著跳過循環體重余下的語句,但不結束循環。
6 簡單推導
列表推導是一種從其他列表創建列表的方式,類似於數學中的集合推導。如:
[x * x for x in range(10)] 表示0~9 的平方列表。
[x * x for x in range(10) if x%2 == 0] 表示0~9中能夠被整除2的數的平方列表
[(x,y) for x in range(10) for y in range(10)] 等效於兩個for循環,表示x從0~9、y從0~9的笛卡爾積。
7 pass、del、exec、eval
7.1 pass
由於python中代碼塊不能為空,通常用pass 占位符來表示,代表什麽都不用做。
7.2 del
對於你不再使用的對象,python通常對將其刪除。del obj 不僅會刪除到對象的引用,還會刪除名稱本事。
7.3 exec
函數exec將字符串作為代碼執行。
7.4 eval
函數eval將字符串作為表達式執行並返回結果。
python學習筆記(四)、條件、循環及其他語句