我对集合的in
运算符有点困惑。
如果我有一组s
和一些实例b
,b in s
是否意味着“ x
中有一些元素s
} b == x
是true
“?
答案 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>