Python 컨테이너·슬라이싱·문자열
컨테이너의 순서·중복·변경 가능성을 먼저 표시한다.
실기 학습 목표
컨테이너의 순서·중복·변경 가능성을 먼저 표시한다.
핵심 이론
list는 가변 순서열, tuple은 불변 순서열, set은 중복 없는 집합, dict는 키와 값의 대응이다. set의 출력 순서를 고정해서 외우지 않는다. dict는 삽입 순서를 유지한다.
음수 인덱스는 뒤에서 센다. s[start:stop:step]은 stop을 제외하며 음수 step은 역방향이다. s[::-1]은 역순이다. 슬라이스 경계 생략은 step의 부호에 따라 해석한다.
문자열은 불변이며 split은 분리, join은 문자열들을 구분자로 연결한다. append는 원소 하나, extend는 반복 가능한 대상의 원소들을 추가한다. sort는 제자리 정렬 후 None, sorted는 새 리스트를 반환한다.
dict 순회 기본값은 키이며 items()는 키·값 쌍이다. get은 없는 키의 기본값을 지정할 수 있다. 리스트 컴프리헨션은 반복과 조건의 실행 순서를 확인한다.
슬라이싱을 실제 인덱스 목록으로 바꾼다
슬라이스 a[start:stop:step]에서 stop은 포함하지 않는다. 음수 step이면 인덱스가 감소한다. 먼저 대상 인덱스들을 써 보고 그 위치의 원소를 순서대로 가져온다. 생략된 경계는 step 방향에 따라 달라지므로 무조건 0과 len으로 치환하지 않는다.
a=[10,20,30,40,50]일 때 a[1:5:2]는 인덱스 1·3을 선택해 [20,40]이다. a[::-1]은 전체를 반대 순서로 가져와 [50,40,30,20,10]이 된다. a[-1]은 마지막 원소 하나이며 길이 1인 리스트가 아니라 그 원소의 값이다.
리스트는 순서가 있고 수정할 수 있다. 튜플은 원소 연결을 바꿀 수 없고, 집합은 중복을 제거하며 출력 순서를 일반적으로 고정하지 않는다. 딕셔너리는 키로 값을 찾는다. 집합의 원소 수와 리스트의 중복 포함 길이를 구별한다.
컴프리헨션은 반복 → 조건 필터 → 결과식의 순서로 풀면 된다. [x*2 for x in range(4) if x%2]는 x=1·3만 남겨 [2,6]이다. split은 문자열을 나누고 join은 문자열들을 구분자로 연결한다. print가 만든 대괄호·쉼표·따옴표와 직접 join한 결과의 구분 기호도 확인한다.
풀이 예시
다음 Python 3.11 이상 프로그램이 표준 출력에 기록하는 내용을 쓰시오. 마지막 줄바꿈의 유무는 답안에서 구별하지 않는다.
pairs = [("r", 2), ("b", 5), ("r", 7), ("g", 3)]
d = {k: v + 1 for k, v in pairs}
d["b"] += d["g"]
print("/".join(f"{k}:{d[k]}" for k in sorted(d)))
예시 정답
b:10/g:4/r:8
풀이 과정
같은 키 r의 값은 마지막 7+1=8로 덮어쓴다. b는 6+4=10, g는 4이다. 키를 정렬해 b,g,r 순서로 출력한다.
답안 점검
위 풀이 예시의 답을 가린 뒤, 핵심 이론의 규칙을 적용해 직접 풀어 보세요. 코드와 계산 문제는 중간값·단위·최종 출력의 순서를, 용어 문제는 지문의 핵심 단서와 답의 의미를 점검하세요. 해설과 다른 부분이 있으면 어느 조건을 놓쳤는지 확인하고 연결된 실기 문제로 다시 연습하세요.