嗨in
opeartor用於成員資格測試,==
運算符用於平等測試。
一般我們用in
進行序列對象的成員測試。並且能夠在字典,集合,元組,列表,字符串等中進行測試。但是它的行爲基於對象類型而有所不同。
字典:
它檢查是否有key
存在。
>>> d = {'key' : 'value'}
>>> 'key' in d
True
>>> 'k' in d
False
>>>
集:
下它會檢查關鍵引擎蓋存在,集實現是一樣的某些虛擬值字典。
>>> s = set(range(10))
>>> 1 in s
True
>>>
列表和元組:
對於列表和元組類型,當且僅當存在一個索引i,使得x == Y [i]爲真中的x y是真實的。
>>> l = range(10)
>>> 3 in l
True
>>>
字符串:
檢查子串是否存在的字符串例如內部。 x中y是真的當且僅當x是y的子串。 !等效測試y.find(X)= - 1
使用定義的數據類型:其定義__contains__()
方法
用戶定義的類中,x在y爲真當且僅當y.__contains__(x)
是真的。
class Person(object):
def __init__(self,name,age):
self.name = name
self.age = age
def __contains__(self, arg):
if arg in self.__dict__.keys():
return True
else:
return False
obj_p = Person('Jeff', 90)
print 'Jeff', 'Jeff' in obj_p
print 'age', 'age' in obj_p
print 'name', 'age' in obj_p
我希望你能清楚一些什麼是in
的用法。
讓重寫你的代碼片段:
>>> Matrix = ['kys_q1a1','kys_q1a2','kys_q1a3','kys_q1a4','kys_q1a5','kys_q1a6']
>>> fixedlist = ['kys_q1a2', 'kys_q1a5']
>>> for i in fixedlist:
... print i, i in Matrix
...
kys_q1a2 True
kys_q1a5 True
>>>
最後讓我們看看一些平等的測試:==
:
>>> 'a' == 'b'
False
>>> 'a' == 'a'
True
>>> 'a' == 'ab'
False
>>> '' in 'ab' # empty string is treated as a sub-string for any string
True
>>> '' == 'ab' # False as they are having different values
False
>>>
>>> 1 == 'ab'
False
>>> 1 == 1
True
>>>
啊我看。在這種情況下,如果我使用「in」,我實際上可以刪除一行「for fixedcol in fixedlist」,只是說「如果topmember in fixedlist」。涼! –