728x90
728x90

or 연산자와 | 연산자의 차이

들어가며

  • 파이썬(Python)에서 or 연산자와 | 연산자의 차이에 대해 정리해본다.
  • or 연산자와 | 연산자 모두 논리 연산자(Logical Operator)이지만, 사용 목적과 동작 방식에 차이가 있다.

 

or 연산자

  • 유형 : 논리 연산자
  • 논리적 OR 연산을 수행하여, 두 피연산자 중 하나라도 True일 경우 True를 반환한다.
  • 단축 평가(Short-Circuit Evaluation) : 첫 번째 피연산자가 True이면 두 번째 피연산자는 평가되지 않는다.
  • 피연산자 타입 : bool 또는 bool로 평가될 수 있는 평가식 (거의 모든 파이썬 객체)
  • 반환값 : True 또는 False

 

| 연산자

  • 유형 : 비트 연산자
  • 비트 단위 OR 연산을 수행하여 두 피연산자의 각 비트를 비교하여 하나라도 1이면 1을 반환한다.
  • 피연산자 타입 : 정수형(int) 또는 비트 연산을 지원하는 객체(numpy Array, pandas Series)
    • numpy의 배열(Array)과 pandas의 시리즈(Series) 객체에서는 or 연산자가 아닌 | 연산자를 사용한다!
  • 반환값 : 피연산자와 동일한 타입의 객체 (각 비트의 OR 결과)

 

참고

  • 다음과 같이 pandas데이터프레임(또는 시리즈)을 사용하여 논리 연산을 할 때는 or 연산자가 아닌 | 연산자를 사용한다.
import pandas as pd
import numpy as np
df = pd.read_csv('./datasets/P210203.csv')
upper = np.mean(df['charges']) + 1.5 * np.std(df['charges'])
lower = np.mean(df['charges']) - 1.5 * np.std(df['charges'])
range = (df['charges'] >= upper) | (df['charges'] <= lower) # or 연산자가 아닌 | 연산자 사용
result = df[range].sum()
print(result)

 

728x90
728x90

or 연산자와 | 연산자의 차이들어가며or 연산자| 연산자참고