對Python 同時符合兩個的條件的語句,用and連接,不能用&&(會報錯);
也可以用or表示或者。
代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
print '開始測試' a = 12 b = 13 c = 1 a_s = '12' b_s = '13' if a < b and a_s < b_s: print 'True' else : print '不成立' if a < b or a_s > b_s: print 'True' else : print '不成立' |
輸出:
1
2
3
|
# 開始測試 # True # True |
判斷一個 list 是否為空
傳統的方式:
1
2
3
4
|
if len (mylist): # Do something with my list else : # The list is empty |
由于一個空 list 本身等同于 False,所以可以直接:
1
2
3
4
|
if mylist: # Do something with my list else : # The list is empty |
補充:python if語句多個條件-python if條件判斷語句
if的基本格式
if語句用來做判斷,并選擇要執(zhí)行的語句分支。
基本格式如下:
1
2
3
4
5
6
7
8
9
|
if CONDITION1: code_block( 1 ) elif CONDITION2: code_block( 2 ) elif CONDITION3: ... ... else : code_block_else |
其中elif是可選的,可以有任意多個,else是可選的,表示全都不滿足條件時該執(zhí)行的分支。
例如:
1
2
3
|
a = 4 if a > 3 : print ( "hello world" ) |
條件表達式Condition部分以運算結果的True、False為if的分支執(zhí)行依據。在Python中所有數據對象要么是True,要么是False,所以任何一個數據、表達式都可以作為if的Condition。
例如:
1
2
3
4
5
6
7
8
9
10
11
12
|
if 1 : ... if a > b: ... if 'a' : ... if []: ... if [[]]: ... if a and b: ... |
至于如何判斷True、False,參見布爾值和邏輯運算。
switch/case的替代方案
在python中并沒有switch和case的分支選擇語句,但是使用if或dict也能輕松實現。
例如,使用dict實現等值的分支選擇:
1
2
3
4
5
6
7
8
|
D = { "apple" : 8.0 , "pear" : 3.5 , "orange" : 2.5 , "banana" : 2.5 } fruit = "banana" print (D[fruit]) |
上面沒有提供default情況時的分支,但使用get()可以設置dict中找不到key時默認返回的值。
例如:
1
|
print (D.get( "greens" , "no this fruit" )) |
還可以通過in的成員測試來設置分支:
1
2
3
4
|
if fruit in D: print (D[fruit]) else : print ( "no this fruit" ) |
dict只能做等值比較的分支選擇,要提供非等值的分支比較,只能用if語句。
例如:
1
2
3
4
5
6
7
8
9
|
score = 77 if score > = 90 : print ( "優(yōu)秀" ) elif 70 < = score < 90 : print ( "良好" ) elif 60 < = score < 70 : print ( "及格" ) else : print ( "不及格" ) |
使用if的好處是通俗易懂,使用dict的好處是將數據存儲到數據結構中,而存儲到數據結構中的數據可以是很復雜的。比如,將函數作為dict的value。
if/else三元表達式
即所謂的三目運算,只不過python中不支持x ? y : z的方式,而是使用if的另一種表達式語法。
對于if x: xxx; else yyy這樣的兩分支語句,可以使用更精簡的表達式方式來描述:
1
|
xxx if x else yyy |
雖然看上去和原始的沒什么區(qū)別,但很多時候要方便的多。
例如賦值:
1
2
3
4
|
if x: a = y else : a = z |
等價的三元if寫法:
1
|
a = y if x else z |
注意,上面"="表示這整行是一個賦值語句,右邊的是評估對象,評估之后賦值給a,也就是等價于a = (y if x else z),而不是等價于(a = y) if x else z。
else不能缺少,否則不是三元運算。另外,if的分支代碼體y和z都必須只能是單條語句,不能是多語句。也就是說,不能轉換下面的代碼格式為三元表達式。
1
2
3
4
5
6
|
if x: statement1 statement2 else : statement3 statement4 |
實際上,三元運算也能使用and / or來實現,還能使用序列 + bool()來實現。
例如:
1
|
a = ((x and y) or z) |
一般比較少用and/or來實現分支,因為可讀性不好,而且并不總是能和if等價。但有一種情況使用and/or非常方便:從多個值中選擇一個真值。
例如:
1
|
a = x or y or z or None |
下面是使用序列 + bool()的方式實現的三元運算操作,思路是bool(CONDITION)作為序列的索引。
1
|
a = [y, z][ bool (x)] |
還是那句話,python中基本總是首選簡單的、通俗易懂的方式。所以,用if吧。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。如有錯誤或未考慮完全的地方,望不吝賜教。
原文鏈接:https://blog.csdn.net/xiaoyaozizai017/article/details/71817704