Python的“in”集合运算符

时间:2012-01-02 21:11:10

标签: python

我对集合的in运算符有点困惑。

如果我有一组s和一些实例bb in s是否意味着“ x中有一些元素s } b == xtrue “?

6 个答案:

答案 0 :(得分:78)

是的,但意味着hash(b) == hash(x),所以项目的相等性不足以使它们相同。

答案 1 :(得分:58)

没错。您可以在解释器中尝试这样:

>>> a_set = set(['a', 'b', 'c'])

>>> 'a' in a_set
True

>>>'d' in a_set
False

答案 2 :(得分:10)

是的,它可能意味着,或者它可以是一个简单的迭代器。例如: 迭代器示例:

a=set(['1','2','3'])
for x in a:
 print ('This set contains the value ' + x)

同样作为支票:

a=set('ILovePython')
if 'I' in a:
 print ('There is an "I" in here')

已编辑:已编辑为包含集而不是列表和字符串

答案 3 :(得分:3)

虽然字符串不是set类型,但在脚本验证期间具有有价值的in属性:

yn = input("Are you sure you want to do this? ")
if yn in "yes":
    #accepts 'y' OR 'e' OR 's' OR 'ye' OR 'es' OR 'yes'
    return True
return False

我希望这可以帮助您更好地理解in在此示例中的用法。

答案 4 :(得分:2)

集合的行为与字典不同,您需要使用集合操作,例如issubset():

>>> k
{'ip': '123.123.123.123', 'pw': 'test1234', 'port': 1234, 'debug': True}
>>> set('ip,port,pw'.split(',')).issubset(set(k.keys()))
True
>>> set('ip,port,pw'.split(',')) in set(k.keys())
False

答案 5 :(得分:0)

List 的 __contains__ 方法使用其元素的 __eq__ 方法。而 set 的 __contains__ 使用 __hash__。看一下我希望明确的以下示例:

<div *ngIf="otp.length > 2 ">
    Max 2 characters long.
</div> 

控制台打印:

<li data-help="4">
 <span class="numberIconPage2" style="position: absolute; top: -238px">4</span>
    <p class="titlePage2" style="position: absolute; top: -238px;">
         {{'1609-1611' | t }}
    </p>
     
    <input type="text" class="inputSignInAccess" [(ngModel)]="otp">
       <div *ngIf="otp.length > 2 ">
          Max 2 characters long.
       </div> 
       
</li>