데이터 분석

파이썬 and 와 & 차이 (+ 예시, 오류 메시지)

The Ohgorithm 2025. 10. 20. 13:35

and 와 & 는 비슷하게 생겼지만 완전히 다른 개념이에요. 헷갈리기 쉬운데, 아래 정리로 한 번에 이해할 수 있습니다👇


🔹 1️⃣ and — 논리 연산자 (Logical Operator)

  • 파이썬 내장 논리 연산자로, True/False 값을 다룹니다.
  • if, while 등 조건문용입니다.
  • 파이썬의 전체 객체를 비교하면서 왼쪽부터 평가합니다.
 
# ✅ and 예시 x = True y = False print(x and y) # False print(x and True) # True # ⚠️ 배열이나 시리즈엔 사용 불가 # 예: # (df['연비'] > 50) and (df['마력'] < 150) ❌ 오류 발생!

오류 메시지 예시:

 
ValueError: The truth value of a Series is ambiguous.

👉 즉, Series(여러 값)에는 and 못 씀.


🔹 2️⃣ & — 비트 연산자 (Bitwise Operator)

  • 정수(int)에서는 비트 단위 AND 연산을 합니다.
  • pandas / numpy에서는 요소별(element-wise) 비교 시에 사용됩니다.
 
# ✅ 숫자에서 비트연산 print(6 & 3) # 6: 110, 3: 011 → 010(=2) # ✅ pandas/numpy에서 조건 결합 (df['연비'] > 50) & (df['마력'] < 150) # 각 행마다 True/False를 AND로 결합

💡 pandas에서는 ( ) 꼭 써야 합니다:

 
cond = (df['연비'] > 50) & (df['마력'] < 150)

괄호가 없으면 우선순위 오류(&가 비교보다 먼저 계산됨) 발생합니다.


🔹 3️⃣ 정리 표

구분키워드쓰는 곳작동 대상예시
논리 연산 and, or, not 일반 조건문 단일 값 if a>0 and b>0:
비트 연산 &, ` , ~` pandas, numpy 시리즈/배열

요약

  • 단일 조건 → and
  • DataFrame, Series → &
  • 괄호는 항상 (조건1) & (조건2) 형태로 묶기