1. 原地交換兩個數字
Python 提供了一個直觀的在一行代碼中賦值與交換(變量值)的方法,請參見下面的示例:
x,y= 10,20print(x,y)x,y= y,xprint(x,y)#1 (10, 20)#2 (20, 10)
賦值的右側形成了一個新的元組,左側立即解析(unpack)那個(未被引用的)元組到變量 <a> 和 <b>。
一旦賦值完成,新的元組變成了未被引用狀態并且被標記為可被垃圾回收,最終也完成了變量的交換。
2. 鏈狀比較操作符
比較操作符的聚合是另一個有時很方便的技巧:
n= 10result= 1< n< 20print(result)# Trueresult= 1> n<= 9print(result)# False
3. 使用三元操作符來進行條件賦值
三元操作符是 if-else 語句也就是條件操作符的一個快捷方式:
[表達式為真的返回值] if [表達式] else [表達式為假的返回值]
這里給出幾個你可以用來使代碼緊湊簡潔的例子。下面的語句是說“如果 y 是 9,給 x 賦值 10,不然賦值為 20”。如果需要的話我們也可以延長這條操作鏈。
x = 10 if (y == 9) else 20
同樣地,我們可以對類做這種操作:
x = (classA if y == 1 else classB)(param1, param2)
在上面的例子里 classA 與 classB 是兩個類,其中一個類的構造函數會被調用。
下面是另一個多個條件表達式鏈接起來用以計算最小值的例子:
def small(a,b,c):returnaifa<= banda<= celse(bifb<= aandb<= celsec)print(small(1,0,1))print(small(1,2,2))print(small(2,2,3))print(small(5,4,3))#Output#0 #1 #2 #3
我們甚至可以在列表推導中使用三元運算符:
[m**2 if m > 10 else m**4 for m in range(50)]#=> [0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401]
4. 多行字符串
基本的方式是使用源于 C 語言的反斜杠:
multiStr= “select * from multi_rowwhere row_id < 5”print(multiStr)# select * from multi_row where row_id < 5
另一個技巧是使用三引號:
multiStr= “””select * from multi_rowwhere row_id < 5″””print(multiStr)#select * from multi_row#where row_id < 5
上面方法共有的問題是缺少合適的縮進,如果我們嘗試縮進會在字符串中插入空格。所以最后的解決方案是將字符串分為多行并且將整個字符串包含在括號中:
multiStr= (“select * from multi_row ”“where row_id < 5 ”“order by age”)print(multiStr)#select * from multi_row where row_id < 5 order by age
新聞熱點
疑難解答