파이썬/연산자

파이썬 in / not in 완전 정리 | 멤버십 연산자 개념부터 실수까지 한 번에

creator6556 2026. 2. 19. 14:30

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에는 사용할 수 없음


728x90

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 멤버십 연산자 뿐만 아니라 다른 프로그래밍 언어에 대해 알고 싶은 분들은 아래 사이트에 접속하여 원하는 링크에 접속하기

프로그래밍 언어 정리 링크 모음 

728x90