stack is None 이랑 not stack 차이

Leejaegun·2025년 3월 23일

코딩테스트 시리즈

목록 보기
31/49

핵심은 "None"과 "빈 리스트([])"는 전혀 다르다는 것

✅ 개념 요약 먼저!

표현의미True/False 여부
stack is Nonestack 변수가 아예 None 객체인지 확인True ↔ stack = None일 때만
not stackstack비었는지(False인지) 확인True ↔ stack = [], '', 0, False

🔍 예제 1: stack = None

stack = None

if stack is None:
    print("stack is None!")  # ✅ 출력됨

if not stack:
    print("stack is empty or falsy!")  # ✅ 이것도 출력됨
  • stack is None → True (딱 None 객체임)
  • not stack → True (None은 Falsy 값이니까)

✅ 둘 다 실행됨

🔍 예제 2: stack = [] (빈 리스트)

stack = []

if stack is None:
    print("stack is None!")  # ❌ 실행 안됨

if not stack:
    print("stack is empty or falsy!")  # ✅ 실행됨
  • stack is None → False (그냥 빈 리스트일 뿐임)
  • not stack → True (빈 리스트는 Falsy)

not stack만 실행됨

🔍 예제 3: stack = [1, 2, 3] (비어있지 않은 리스트)

stack = [1, 2, 3]

if stack is None:
    print("stack is None!")  # ❌

if not stack:
    print("stack is empty or falsy!")  # ❌

둘 다 조건 안 맞아서 출력 안 됨

🎯 결론

상황추천 조건문
변수가 None인지 정확히 체크하고 싶다if stack is None:
리스트가 비었는지 확인하고 싶다if not stack:
리스트가 비어있지 않은지 확인if stack:

📌 실전 팁

  • 대부분의 경우, 리스트나 dict 등 컨테이너가 비었는지 확인하고 싶다면 if not stack: 혹은 if stack:이 정석

  • is None은 정말로 None인지 확인하는 경우 (예: 아직 초기화 안 됐는지 확인할 때)만 쓰는것.

profile
Lee_AA

0개의 댓글