파이썬의 "in"세트 연산자


143

나는 파이썬 in연산자 세트 에 대해 약간 혼란 스럽다 .

내가 설정 한 경우 s일부 인스턴스를 b, 그것은 사실이다 b in s수단 " 일부 요소가 x있는 sb == x입니다이true ?"


77
당신은 수학자입니까? 지나치게 복잡한 방식으로 간단한 것을 묘사 ..;)
ThiefMaster

13
컴퓨터 과학자. 문서에 "s의 멤버 자격 테스트 x"라고 표시되어 있기 때문에 약간 혼란스러워합니다. 저에게 "인스턴스 x는 s에 포함되어 있습니다"또는 "일부 인스턴스는 x와 같은 값을 가진 s에 있습니다"를 의미 할 수 있습니다. 이것이 정체성인지 평등 비교인지 모르겠습니다.
Dejas

6
@Dejas : 파이썬에는 두 개의 연산자 평등 비교와 동일성 비교가 있다는 것을 알고 있으므로 각각을 확인하는 실험을 구성 할 수 있어야합니다. 해당 실험을 게시하면 도움이됩니다.
S.Lott

답변:



84

맞습니다. 다음과 같이 통역사에서 시도해 볼 수 있습니다.

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

>>> 'a' in a_set
True

>>>'d' in a_set
False

2
문자열 상수가 종종 interned되기 때문에 이것은 좋은 테스트가 아닙니다 (try 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])대신에 시도했습니다 .
Philipp

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')

편집 : 목록과 문자열이 아닌 세트를 포함하도록 편집되었습니다.


2
이것은 세트와 어떤 관련이 있습니까?
Ignacio Vazquez-Abrams

글쎄, 목록이나 문자열조차도 집합과 비슷한 속성을 갖는 것으로 간주 될 수 있다고 가정합니다. 그들은 요소의 모음입니다.
Arnab Ghosal

1
아니요, 세트에는 시퀀스가 ​​포함되지 않는 포함 확인에 대한 추가 조건이 있습니다.
Ignacio Vazquez-Abrams

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예제 의 사용법을 더 잘 이해하는 데 도움이되기를 바랍니다 .


2
그것은 세트가 아닙니다. 문자열도 변경할 수 없습니다.
Ignacio Vazquez-Abrams

7
... or 'e' or 'es' or 's'. 이 무의미한 대답을 삭제하는 것을 고려하십시오.
Quuxplusone

3

집합은 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

그 흥미 롭군요. 그리고 실제 응용 프로그램도 훌륭합니다.
Armstrongest
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.