1 멤버십(Membership) 이란 무엇인가?
- 하나의 값이 어떤 자료(묶음) 안에 포함되어 있는지를 확인하는 개념
- ' 이 값이 이 안에 있나?'는 질문이 핵심 질문
- 값을 계산하지 않고, 값을 바꾸지 않고, 자료를 수정하지 않고, 존재 여부만 판단함
2 멤버십 연산자 2개
1) in
값 in 자료
- 값이 자료 안에 있으면 True, 없으면 False
2) not in
값 not in 자료
- 값이 자료 안에 없으면 True, 있으면 False
- not (값 in 자료)와 같음
3 결과는 항상 bool
- 멤버십은 판단식이라서 판단 결과가 나옴
- 판단 결과는 True 또는 False이며, 이 결과는 bool 타입인 실제 값(객체)이며, 변수에 저장이 가능함
1 코드
result = 3 in [1, 2, 3]
if result:
print('포함됨')
1 결과

4 적용 대상
- 반복 가능한 자료에서만 사용이 가능함
- 그래서 문자열(str), 리스트(list), 튜플(tuple), 딕셔너리(dict), 집합(set)에는 사용이 가능함
- 그리고 숫자(int, float, complex), 불리언(bool), None에는 사용할 수 없음
5 자료형별 동작 차이
1) 문자열(str)
- 연속된 부분 문자열을 검사함
- 순서, 대소문자, 공백 모두 중요함
2-1 코드
print('app' in 'apple') # True
2-1 결과

2) 리스트(list) / 튜플(tuple)
- 요소 하나 단위를 검사함
- 내부적으로 == 비교를 함
2-2 코드 : 리스트를 사용했으며, 튜플은 [] 대신에 ()을 사용함
print([1, 2] in [1, 2, 3]) # False
print([1, 2] in [[1, 2], 3]) # True
2-2 결과

3) 딕셔너리(dict)
- 기본적으로 key만 검사함
- value를 검사하고 싶으면 .values()를 같이 사용함
2-3 코드
print('a' in {'a' : 1}) # key 검사이며, True
print(1 in {'a' : 1}.values()) # value 검사이며, True
2-3 결과

4) 집합(set)
- 값 존재 여부만 검사함
- 순서와 중복이 없어서 매우 빠름
2-4 코드
print(3 in {1, 2, 3}) # True
2-4 결과

6 내부 동작 원리
- 멤버십은 요소를 하나씩 꺼내 ==로 비교하고, 찾는 순간 즉시 종료함
- 리스트/튜플/문자열은 앞에서부터 순차 탐색
- 집합/딕셔너리는 해시 기반으로 거의 즉시 탐색
7 if문에서의 사용 패턴
1) 기본 구조
▼ 있는 경우
if 값 in 자료:
실행문
▼ 없는 경우
if 값 not in 자료:
실행문
- 조건문을 쓸 때 항상 ' 이 코드는 있는 경우에 실행돼야 하나, 없는 경우에 실행돼야 하나?'를 생각해야 함
2) 입력값 검사
3-1 코드
user = input().strip().lower()
if user in ('y', 'yes'):
print('동의')
3-1 결과

3) 딕셔너리 안전 접근
3-2 코드
data ={'a' : 1}
key = 'a'
if key in data:
print(data[key]) # 1
print(data.get(key)) # 1
3-2 결과

8 자주 하는 실수 TOP 핵심
1) dict에서 value를 검사한다고 착각함
4-1 코드
print(1 in {'a': 1}) # False
4-1 결과

2) 리스트에서 부분 포함을 기대함
4-2 코드
print([1, 2] in [1, 2, 3]) # False
4-2 결과

3) 문자열을 문자 집합으로 착각함
4-3 코드
print('ab' in 'a b') # False
4-3 결과

4) 타입 차이를 무시함
4-4 코드
print(3 in ['3']) # False
4-4 결과

5) None을 in으로 검사함
4-5 코드
x = None
print(x in None)
4-5 결과

6) 큰 리스트에서 성능 무시
4-6 코드
value in big_list
Python 멤버십 연산자에 대해 더 상세한 설명을 원하는 분들은 아래 사이트에 접속하기
Python 멤버십 연산자 뿐만 아니라 다른 프로그래밍 언어에 대해 알고 싶은 분들은 아래 사이트에 접속하여 원하는 링크에 접속하기
'파이썬 > 연산자' 카테고리의 다른 글
| 파이썬 조건 표현식(삼항 연산자) 완벽 정리|if문과 차이, 사용법, 언제 써야 할까? (0) | 2026.02.24 |
|---|---|
| 파이썬 is 연산자 완벽 정리|==와 차이부터 None 비교까지 초보자 필수 가이드 (0) | 2026.02.21 |
| 파이썬 할당 완전 정리: 변수, 객체, +=, 스왑, 언패킹까지 한 번에 이해하기 (0) | 2026.02.16 |
| 파이썬 논리 연산자 완벽 정리 (and, or, not)|Truthy/Falsy부터 실전 사용법까지 한 번에 (0) | 2026.02.06 |
| 파이썬 비교 연산자 완벽 정리: True/False부터 비교 체이닝까지 (초보자 필독) (0) | 2026.01.29 |