python物件的比較(is,==,物件大小比較>,
阿新 • • 發佈:2019-02-05
#一、python物件的"==、is"比較
"""
1、python的比較總是檢查複合物件的所有部分,直到可以得出結果為止。
2、會自動遍歷巢狀的所有資料結構,有多深走多深,首次發現的差值將決定比較的結果
"""
"""
== :操作符測試值的相等性
is :表示式測試物件的一致性,表示同一個物件,在同一記憶體地址中
輸出結果:
True False
"""
L1 = [1,('A',2)]
L2 = [1,('A',2)]
print L1 == L2,L1 is L2
"""
關於短字串的一致性比較特殊:
python內部暫時儲存並重復使用短字串作為最佳化,實際記憶體中只有一個字串'spam‘供S1、S2分享
輸出結果:
True True
"""
S1 = "SPAM"
S2 = "SPAM"
print S1 == S2,S1 is S2
"""
當比較的字串較長時 is比較結果為False
執行結果:False
"""
S11 = "a longer strnig"
S22 = "a longer string"
print S11 is S22
"""
列表、字典、元組、自定義程式型別的一致性判定(is)
以下判定結果均為False,因為都不是一個物件,記憶體地址不一樣
"""
l = [1,3,'a']
print l is list
d = {1:1,'a':'b'}
print d is dict
t = (1,2 ,3)
print t is tuple
class A(object):
def __init__(self):
print "object is born!"
a = A()
print a is A
print '---------------'
a1 = 1
a2 = 1
print a1 is a2 #返回True
#二、python物件的大小比較規則:
"""
1、數字通過相對大小進行比較
2、字串按照字典順序(編碼順序),一個字元接一個字元進行比較
3、列表和元組從左到右對每部分的內容進行比較
4、字典通過排序後的(鍵,值)列表進行比較,pyton3.0中不支援
5、數字混合型別pyton3.0中不支援,拼音。6中允許
"""
#執行結果:[True, True, True, True]
print [33 < 99,'abc' < 'ac',{'a':1,'b':2} > {'a':1,'B':2},1 < 'spam']
#巢狀比較
"""
執行結果:False False True
"""
Li1 = [1,('a',3)]
Li2 = [1,('a',2)]
print Li1 < Li2,Li1 == Li2,Li1 > Li2