初學Python在看程序時發現python中if-else的多種寫法,故對其進行分析。
以下為網絡內容:
a, b, c = 1, 2, 3
1.常規
if a>b:
c = a
else:
c = b
2.表達式
c = a if a>b else b
3.二維列表
c = [b,a][a>b]
4.傳說是源自某個黑客
c = (a>b and [a] or [b])[0]
個人分析:
1、2為程序的基本語法不討論
3:首先a>b的取值為True或False,而在python中True的默認值為1False的默認值為0。
可得c = [b, a][1]或[b, a][0],即從列表中按下標索引的方式取值給c。
4:首先在Python中,對於邏輯運算符and 、or :
and: x and y 返回的結果是決定表達式結果的值。根據"短路"原則當x為真時決定表達式的真假由y的值決定,所有返回y;如果x為假則不進行y的判斷,返回x。
or: x or y 當x為真直接返回x的值;當x為假、y為真時返回y的值;當全為假時返回y的值。
所以當在式子中:
當 a>b為真:a>b and [a] 即為真,不在進行or的判斷,返回[a]
當 a>b為假:a>b and [a] 即為假,返回[b]
再對列表[a]或[b]進行按下標0進行取值,得到a或b。