[파이썬 기초] 조건문과 연산자

2026. 6. 15. 21:00·BI&Programming-Tools/Python

연산자

비교 연산자

두 값을 비교해서 True 또는 False를 반환합니다.

연산자 의미 예시
== 같다 3 == 3 → True
!= 같지 않다 3 != 5 → True
> 크다 5 > 3 → True
< 작다 3 < 5 → True
>= 크거나 같다 5 >= 5 → True
<= 작거나 같다 3 <= 5 → True
coverage = 30.5
print(coverage >= 20)     # True
print(coverage == 30)     # False
print(coverage != 30)     # True

 

파이썬에서는 비교 연산자를 연속으로 연결할 수 있습니다.

q_score = 25
print(20 <= q_score <= 40)    # True (20 이상 40 이하)

논리 연산자

연산자 의미
and 두 조건 모두 참일 때 True
or 하나라도 참이면 True
not 참/거짓 반전
coverage = 30.5
q_score = 25

print(coverage >= 20 and q_score >= 20)    # True
print(coverage < 10 or q_score >= 20)     # True
print(not coverage >= 20)                  # False

단락 평가 (short-circuit evaluation)

and는 앞 조건이 False이면 뒤를 평가하지 않고, or는 앞 조건이 True이면 뒤를 평가하지 않습니다.

# 리스트가 비어있을 때 인덱스 접근을 방지하는 패턴
genes = []
if genes and genes[0] == "BRCA1":    # genes가 비어있으면 뒤를 평가하지 않음
    print("BRCA1 존재")

 

멤버십 연산자


값이 컬렉션 안에 있는지 확인합니다.

genes = ["BRCA1", "TP53", "EGFR"]

print("BRCA1" in genes)      # True
print("KRAS" not in genes)   # True
print("TP53" in genes)       # True

# 딕셔너리에서는 키 기준으로 확인
sample_info = {"id": "sample_01", "coverage": 30.5}
print("id" in sample_info)         # True
print("coverage" in sample_info)   # True


동일성 연산자

a = [1, 2, 3]
b = [1, 2, 3]
c = a

print(a == b)    # True (값이 같음)
print(a is b)    # False (다른 객체)
print(a is c)    # True (같은 객체)

 

==는 값이 같은지, is는 같은 객체인지를 비교합니다. None 비교에는 == 대신 is를 사용하는 것이 권장됩니다.

result = None
print(result is None)     # True (권장)
print(result == None)     # True (비권장)

조건문

if / elif / else

if 조건:
    # 조건이 True일 때 실행
elif 다른조건:
    # 앞 조건이 False이고 이 조건이 True일 때 실행
else:
    # 모든 조건이 False일 때 실행

 

파이썬은 중괄호 대신 들여쓰기로 블록을 구분합니다. 들여쓰기는 스페이스 4칸을 표준으로 사용합니다.

coverage = 25.0

if coverage >= 30:
    print("충분한 커버리지")
elif coverage >= 20:
    print("적정 커버리지")
else:
    print("낮은 커버리지")
# 적정 커버리지
# 생물정보학 예시: 품질 필터링
q_score = 28
read_length = 150

if q_score >= 30 and read_length >= 100:
    print("고품질 리드")
elif q_score >= 20:
    print("사용 가능한 리드")
else:
    print("필터링 대상")

중첩 조건문

gc_content = 0.48
coverage = 35.0

if coverage >= 20:
    if gc_content >= 0.4 and gc_content <= 0.6:
        print("정상 범위")
    else:
        print("GC 함량 이상")
else:
    print("커버리지 부족")

중첩이 깊어지면 가독성이 떨어집니다.

논리 연산자로 조건을 합치거나, 조건이 충족되지 않으면 일찍 반환(early return)하는 방식으로 단순화하는 것이 좋습니다.

def check_quality(gc, cov):
    if cov < 20:
        return "커버리지 부족"
    if not (0.4 <= gc <= 0.6):
        return "GC 함량 이상"
    return "정상 범위"

조건부 표현식 (삼항 연산자)

간단한 조건 분기를 한 줄로 표현합니다.

# 기본 형태
값 = 참일때값 if 조건 else 거짓일때값
coverage = 25.0
status = "충분" if coverage >= 30 else "부족"
print(status)    # 부족

# 리스트 컴프리헨션과 함께 사용
scores = [25, 35, 18, 30, 22]
labels = ["pass" if s >= 30 else "fail" for s in scores]
# ['fail', 'pass', 'fail', 'pass', 'fail']

 

조건이 복잡하거나 중첩될 경우 가독성이 떨어지므로, 단순한 경우에만 사용하는 것이 좋습니다.

match 문 (파이썬 3.10 이상)

여러 값과 매칭하는 경우 match 문을 사용할 수 있습니다.

다른 언어의 switch 문과 비슷합니다.

file_type = "fastq"

match file_type:
    case "fastq":
        print("FASTQ 파일 처리")
    case "fasta":
        print("FASTA 파일 처리")
    case "bam" | "sam":
        print("BAM/SAM 파일 처리")
    case _:
        print("지원하지 않는 형식")

 

case _는 어떤 값과도 일치하는 기본 케이스입니다. 여러 값을 동시에 매칭할 때는 |로 구분합니다.



연산자 우선순위

여러 연산자가 함께 사용될 때 우선순위에 따라 평가됩니다. 아래로 내려갈수록 우선순위가 낮습니다.

우선순위 연산자
높음 ** (거듭제곱)
  *, /, //, %
  +, -
  <, >, <=, >=, ==, !=
  in, not in, is, is not
  not
  and
낮음 or

 

우선순위가 불명확할 때는 괄호로 명시적으로 묶어서 의도를 분명히 하는 것이 좋습니다.

# 의도가 불명확한 경우
result = a > b and c < d or e == f

# 괄호로 명확하게
result = (a > b and c < d) or (e == f)

 

'BI&Programming-Tools > Python' 카테고리의 다른 글

[파이썬 기초] 람다 함수와 내장 함수, collections 모듈  (0) 2026.06.16
[파이썬 기초] 반복문 (while, for, comprehension)  (0) 2026.06.16
[파이썬 기초] print / input / 주석  (0) 2026.06.15
[파이썬 기초] 딕셔너리, 셋, 불리언  (0) 2026.06.15
[파이썬 기초] 리스트와 튜플  (0) 2026.06.15
'BI&Programming-Tools/Python' 카테고리의 다른 글
  • [파이썬 기초] 람다 함수와 내장 함수, collections 모듈
  • [파이썬 기초] 반복문 (while, for, comprehension)
  • [파이썬 기초] print / input / 주석
  • [파이썬 기초] 딕셔너리, 셋, 불리언
데이터로 읽는 생명
데이터로 읽는 생명
is-note 님의 블로그 입니다.
  • 데이터로 읽는 생명
    In Silico Note
    데이터로 읽는 생명
  • 전체
    오늘
    어제
    • 분류 전체보기 (190)
      • Bio-Knowledge (16)
        • 분자생물학 & 유전학 기초 (0)
        • 전사체학 & 유전자 발현 (0)
        • 구조생물학 & 단백질 (0)
        • 싱글셀 & 다중오믹스 (0)
        • 임상유전학 & 질환 데이터 (0)
      • Programming (4)
        • API (4)
      • BI&Programming-Tools (111)
        • File Formats (14)
        • Linux & Bash Script (38)
        • Python (35)
        • R (11)
        • 통계 (8)
        • Pipeline Manager (0)
        • Etc (5)
      • Bio Data Analysis (28)
        • 서열분석개론 (6)
        • WGS(Whole Genome Seq) (11)
        • WES(Whole Exome Seq) (2)
        • RNA-Seq (4)
        • Metagenome (2)
        • Non-human Resequencing (1)
        • 임상유전체 분석 (1)
        • Multi-Omics (1)
      • Bio-Trends & Tech (1)
      • 코딩테스트 연습 (30)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    생물정보학
    리눅스기초
    FASTQ
    파이썬
    R기초
    분자생물학
    통계
    파이썬기초
    bioinformatics
    R
    wgs
    유전체분석
    ngs
    데이터분석
    리눅스
    fasta
    GATK
    코딩테스트
    파일포맷
    파이썬연습
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
데이터로 읽는 생명
[파이썬 기초] 조건문과 연산자
상단으로

티스토리툴바