這篇文章介紹python中的比較運算,比較運算不僅可以用來比較兩個數值資料的大小,還能比較字串或列表的大小。
數值資料的比較十分簡單,如果運算式為真,就返回True,為假就返回False,請看下面的執行個體:
>>> 1>2
False
>>> 1<2
True
#比較兩個數值資料是否相等的時候,需要使用雙等號
>>> 1==1
True
>>> 2>=1
True
>>> 2>=2
True
#1不等於2
>>> 1!=2
True
0×2.比較列表
列表的大小比較會逐個比較列表中的元素(相同索引位置的元素進行比較),如果完全相同則返回True,請看下面的執行個體:
#建立兩個列表,第一個元素並不相同
>>> a=["www.111cn.net","晴刃"]
>>> b=["111cn.net","晴刃"]
#因為第一個元素不同,所以返回False
>>> print(a==b)
False
#比較運算會逐個比較列表中的元素值,本例中因為b中第一個元素的第一個字元w的ASCII碼值要大於a中第一個元素的第一個字元w的ASCII碼值,所以答案是False,這在後面的字串比較中會詳細介紹
>>> print(a<b)
False
#下面這個運算式看起來有點複雜,首先a[-1]和b[-1]能夠定位到兩個列表的最後一個元素(晴刃),[-len(a[-1]):-1]中的len()Function Compute這個元素的長度(2),負號會讓計數從後往前計算,最後一位是-1,-2則定位到"晴",說明號分區將從-2的位置,取到-1的位置,但不包含-1的位置,所以最後截取出來的就是字元"晴",兩個"晴"比較肯定返回True
>>> print(a[-1][-len(a[-1]):-1]==b[-1][-len(a[-1]):-1])
True
>>> b=["www.111cn.net","晴刃"]
>>> print(a==b)
True
對列表的比較方法同樣適用於元組和字典,字典稍微有所不同,在字典中,只要鍵和值都能匹配,則兩個字典相同,不需要索引值的索引位置也相同,請看下面的執行個體:
#雖然a和b字典中索引值對的索引位置不同,但每個鍵和值都在另一個字典中能夠匹配到相同的資料,python認為這兩個字典是相同的,而列表和元組則需要匹配索引和索引位對應的值
>>> a={1:"a",2:"b",3:"c"}
>>> b={2:"b",3:"c",1:"a"}
>>> print(a==b)
True
>>> c={1:"x",2:"2",3:"three"}
>>> print(a==c)
False
0×3.比較字串
字串的比較實際上是ASCII碼的比較,在ASCII碼中,每個字元都有一個對應的十進位數,請看下面的執行個體:
#比較單個字元,在ASCII碼中,大寫字母排列在小寫字母之前,大寫的A對應的十進位數是65,而小寫a對應的十進位為97,所以運算式為真
>>> print("a">"A")
True
>>> print("a">"b")
False
#多個字元組成的字串比較大小時,會從索引0的位置開始逐個進行比較,只要碰到一個字元不相等則返回結果,不會再去比較後面的字元(請注意,是逐個比較,而不是將所有字元轉換成十進位相加後的比較,大家可以嘗試比較bdef和azzz的大小,明顯azzz所有字元的十進位相加比bdef大,但是逐個比較時第一個字元a就比b小,所以python會認為bdef比azzz大)
>>> a="abcd"
>>> b="abcd"
>>> c="c"
>>> d="abcdmdzz"
>>> print(a==b)
True
#c和a比較,明顯c在ASCII碼中對應的十進位數要比a大
>>> print(a<c)
True
#雖然b和d的前4個字元相等,但是d後面還有四個字元,比較到第五個字元的時候,a並沒有字元可以比較了,所以python認為d比a大
>>> print(a<d)
True
在字串比較時,有兩個方法比較實用,分別為upper()和lower(),這兩個方法能將字串轉換成大寫或小寫形式,請看下面的執行個體:
#upper()能將字串轉換成大寫,而lower()剛好相反
>>> a="abcd"
>>> b=a.upper()
>>> print(b)
ABCD
>>> c=b.lower()
>>> print(c)
abcd
#有時候字串中包含大小寫形式,而我們只想比較每個字元是否相同,可以將他們都轉換成大寫或小寫形式然後比較他們是否相同
>>> x="www.111cn.net"
>>> y="WWW.111cn.net"
>>> print(x.upper()==y.upper())
True
#最後補充一個not運算子,對結果取反
>>> 1==1
True
>>> not 1==1
False