如何判斷乙個集合是否包含這個元素?本文番茄加速就來講一下這個知識點。
isin [1]: a = [1,2,3]
in [2]: id(a) #獲取列表例項 a在記憶體中的位址
out[2]: 95219592
in [5]: b = [1,2,3] #再建立乙個列表例項,元素取值也為 1,2,3
in [6]: id(b)
out[6]: 95165640
in [7]: a is b # is操作符本質上判斷a 和 b的記憶體位址是否相等
out[7]: false
in [8]: b = a # 令b 指向 a,此時b is a 返回 true
in [9]: b is a
out[9]: true
inin是判斷是否包含,判斷乙個集合(如list、tuple)是否包含這個元素
in [70]: 『ab』 in 『abc』
out[70]: true
in [71]: 『ab』 in 『acb』
out[71]: false
in [72]: print([1,2] in [[1,2],『str』])
true
字典只能判斷key 存不存在
in [73]: print(『abc』 in )
true
in [74]: print(『12』 in )
false
== 判斷值是否相等,等不等關係。
in [75]: str1 = 「alg-channel」
in [76]: str2 = 「alg-channel」
in [77]: print(str1 == str2)
true
in [78]: a = [1, 2, 3]
in [79]: b = [1, 2, 4]
in [80]: a == b
out[80]: false
擴充套件目前最常使用 is 的地方是判斷物件是否為 none:
in [78]: a = [1, 2, 3]
in [81]: a is none
out[81]: false
in [82]: none is none
out[82]: true
== 預設呼叫物件的__eq__()方法。繼承自object物件的__eq__()方法直接比較兩個物件的id. 很不幸,很多實際場景中,與我們期望相悖。
class student(object):
definit(self,id,name):
self.id = id
self.name = name
defeq(self, *args, **kwargs):
return object.eq(self, *args, **kwargs)
xiaoming = student(25, 「xiaoming」)
xueming = student(23, 「xueming」)
xiaoming2 = student(25,「xiaoming」)
print(xiaoming is xiaoming2) #false
print(xiaoming == xiaoming2) #false
print(xiaoming is xueming) #false
xiaoming和xiaoming2的屬性一致,期望判斷出他們是同一人,但是不管is 還是 == 都比較了id是否相等。需要重寫 == 操作符預設呼叫的__eq__()方法
defeq(self,other):
return self.id == other.id and self.name == other.name
大多數時候繼承object的類會覆蓋__eq__()方法,比較自定義物件的值可能更有用。
Java 如何判斷乙個陣列中是否包含某個元素
public static boolean uselist string arr,string targetvalue public static boolean useset string arr,string targetvalue public static boolean useloop s...
判斷乙個鍊錶中是否包含環
1 如何判斷乙個鍊錶是不是這類鍊錶?2 如果鍊錶為存在環,如果找到環的入口點?解答 一 判斷鍊錶是否存在環,辦法為 設定兩個指標 fast,slow 初始值都指向頭,slow每次前進一步,fast每次前進二步,如果鍊錶存在環,則fast必定先進入環,而slow後進入環,兩個指標必定相遇。當然,fas...
如何判斷乙個變數是否包含在表的乙個欄位中
今天在做乙個資料庫查詢的時候遇到了乙個難題,就是如何根據給定的引數判斷該引數是否在資料庫表的某個欄位中,並返回記錄集。例如 給定引數為 2 資料庫表的某個字段值為 1,2,4,15或者3,11,13或者null等等 那麼如何根據傳進來的2找到相應的記錄,即字段值為1,2,4,15的那條記錄 最後找到...