Специалист в области информатики. Я просто немного сбит с толку, потому что в документации написано «Проверить x на членство в s». Для меня это может означать «экземпляр x содержится в s» или «в s существует некоторый экземпляр, имеющий то же значение, что и x». Я не знаю, сравнение ли это идентичности или равенства.
Dejas 02
6
@Dejas: Поскольку вы знаете, что в Python есть два оператора сравнения равенства и сравнения идентичностей, вы должны иметь возможность построить эксперимент, который подтвердит каждый из них. Было бы полезно, если бы вы разместили этот эксперимент.
S.Lott
Ответы:
101
Да, но это также означает hash(b) == hash(x), что равенства элементов недостаточно, чтобы сделать их одинаковыми.
Это не очень хороший тест, поскольку строковые константы часто интернируются (попробуйте a = 'a'; b = 'a'; a is b). Я попробовал a = (1, 2, 3); b = (1, 2, 3); a == b; hash(a) == hash(b); a is b; a in set([b])вместо этого.
Филипп
11
Да, это может означать так, или это может быть простой итератор. Например: Пример в качестве итератора:
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')
отредактировано: отредактировано для включения наборов, а не списков и строк
Ответы:
Да, но это также означает
hash(b) == hash(x)
, что равенства элементов недостаточно, чтобы сделать их одинаковыми.источник
Вот так. Вы можете попробовать это в интерпретаторе вот так:
>>> a_set = set(['a', 'b', 'c']) >>> 'a' in a_set True >>>'d' in a_set False
источник
a = 'a'; b = 'a'; a is b
). Я попробовалa = (1, 2, 3); b = (1, 2, 3); a == b; hash(a) == hash(b); a is b; a in set([b])
вместо этого.Да, это может означать так, или это может быть простой итератор. Например: Пример в качестве итератора:
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
этом примере.источник
... or 'e' or 'es' or 's'
. Подумайте о том, чтобы просто удалить этот бессмысленно неправильный ответ.Наборы ведут себя иначе, чем 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
источник