Я немного запутался насчет питона in
операторе для множеств.
Если у меня есть набор в Python s
и некоторый экземпляр b
, верно ли, что b in s
означает "есть ли элемент x
в s
такой, что b == x
true
"?
Я немного запутался насчет питона in
операторе для множеств.
Если у меня есть набор в Python s
и некоторый экземпляр b
, верно ли, что b in s
означает "есть ли элемент x
в s
такой, что b == x
true
"?
Да, но это также означает hash(b) == hash(x)
, поэтому для равномерного распределения элементов недостаточно сделать их одинаковыми.
Это правильно. Вы можете попробовать его в интерпретаторе следующим образом:
>>> a_set = set(['a', 'b', 'c'])
>>> 'a' in a_set
True
>>>'d' in a_set
False
Да, это может означать так, или это может быть простой итератор. Например: Пример как итератор:
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')
отредактирован: отредактирован для включения наборов, а не списков и строк
Строки, хотя они не являются типами 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
с помощью этого примера.
Наборы ведут себя не так, как dicts, вам нужно использовать такие операции, как 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
Да. Это означает, что данный элемент находится в наборе.