Python 핵심 문법

🔥 매회 출제 (priority 3)

🌱 왜 배우나

긴 두루마리에서 “3번째부터 7번째까지만 오려 내고 싶다”거나, 여러 알갱이가 섞인 그릇에서 “짝수 번호만 체로 걸러 내고 싶다”는 일은 프로그래밍에서 정말 자주 생긴다. 이걸 매번 반복문으로 쓰면 코드가 길어지고 번호 하나 잘못 써서 실수하기 쉽다.

Python은 이런 일을 한 줄로 끝낼 수 있는 문법을 준비해 두었다. 원하는 구간만 잘라내는 슬라이싱과, 조건에 맞는 것만 골라 새로 만드는 컴프리헨션이 바로 그 도구다.

📖 핵심 개념

슬라이싱은 [start:end:step] 형식으로 리스트나 문자열의 일부만 잘라내는 문법이다. 리스트란 여러 값을 순서대로 모아 둔 자료형이다. 원본은 그대로 두고 잘라낸 결과를 새로 돌려준다. end 자리의 인덱스는 포함하지 않는다는 점만 기억하면 된다.

딕셔너리(dictionary)는 이름표(키)와 값을 쌍으로 저장하는 자료형이다. 예를 들어 {'이름': '철수', '나이': 15}처럼 쓴다. 번호 대신 이름표로 값을 꺼낸다.

컴프리헨션(comprehension)은 반복문과 조건을 한 줄로 압축하는 문법이다. 리스트, 딕셔너리, 집합을 만들 때 쓸 수 있다. “기존 것에서 조건을 통과한 것만 골라 새로 만들어”라는 뜻이다.

집합(set)은 중복이 없는 값들의 모임이다. 수학에서 배운 교집합, 합집합, 차집합을 그대로 쓸 수 있다.

🔍 시각화

슬라이싱 인덱스 이해:

문자열: a  b  c  d  e  f  g
인덱스: 0  1  2  3  4  5  6
       -7 -6 -5 -4 -3 -2 -1

s[2:5]  → c d e       (2번부터 4번까지, 5번은 포함 안 함)
s[::-1] → g f e d c b a   (역순)

딕셔너리 컴프리헨션 흐름:

{k: v for k, v in data.items() if v % 2 == 0}
  │         │                    │
  │         │                    └─ 조건: 값이 짝수일 때만
  │         └─ 반복: 모든 (키, 값) 쌍을 하나씩 꺼내
  └─ 결과: 통과한 것들로 새 딕셔너리를 만듦

↔️ 이웃 개념 구분

  • 리스트 vs 딕셔너리: 리스트는 번호(인덱스)로 꺼냄. 딕셔너리는 이름표(키)로 꺼냄.
  • sort() vs sorted(): sort()는 원본 리스트를 바로 뒤집어 정렬. sorted()는 원본을 그대로 두고 정렬된 새 리스트를 돌려줌.

🔑 핵심 용어

  • 슬라이싱 [start:end:step]: 리스트나 문자열의 일부만 잘라내는 문법. end는 포함하지 않음. [::-1]은 통째로 뒤집기
  • dict.keys(): 키 목록을 돌려줌
  • dict.values(): 값 목록을 돌려줌
  • dict.items(): (키, 값) 쌍을 튜플로 묶어 돌려줌. 튜플은 한 번 만들면 고칠 수 없는 묶음이다
  • 리스트 컴프리헨션: [표현식 for 변수 in 반복가능 if 조건] — 조건 통과한 것만 골라 새 리스트를 한 줄로 만든다
  • 딕셔너리 컴프리헨션: {k: v for k, v in ... if 조건} — 같은 방식으로 새 딕셔너리를 만든다
  • 집합 연산: & 교집합(양쪽에 다 있는 것), | 합집합(어느 한쪽에라도 있는 것), - 차집합(왼쪽에만 있는 것)

✅ 스스로 가르쳐보기

슬라이싱과 컴프리헨션을 처음 듣는 친구에게 설명한다면 어떻게 말하시겠어요? 두루마리에서 일부를 오려 내는 장면이든, 체로 알갱이를 거르는 장면이든 본인만의 비유 하나로 한 문장 정의를 만들어 보세요.

체크포인트 — 아래를 말로 풀어 설명할 수 있는지 확인해 보세요.

  • s[2:5]에서 왜 인덱스 5는 결과에 포함되지 않는지
  • 딕셔너리 컴프리헨션에서 if 조건이 하는 일
  • 집합 연산 &, |, -가 수학의 어떤 연산에 해당하는지
  • sort()sorted()를 잘못 섞어 쓰면 어떤 버그가 생기는지

🎯 기출 포인트

  • 2025-2회: 딕셔너리 컴프리헨션 + 집합 교집합(&) 혼합 문제. items()로 돌면서 조건을 건 뒤 출력하는 유형
  • 2025-3회: 딕셔너리와 리스트를 함께 다루는 연산 문제. 중첩 딕셔너리 접근 포함
  • 출제 패턴: 코드 실행 결과를 쓰는 유형. 슬라이싱 인덱스 계산과 컴프리헨션의 조건이 핵심

🔗 연결 개념

  • pg-algorithm-001
  • pg-data-structure-001