topic난이도 · 약 25

자료형 & 슬라이싱

List · Tuple · Dict · Set · String + `s[start:stop:step]` 슬라이싱.

#Python#슬라이싱#실기핵심
왜 배우는가

슬라이싱은 실기 Python 코드 추적의 최빈출 주제다. 특히 `[::-1]`(뒤집기), `[::2]`(건너뛰기), 음수 인덱스를 조합한 함정 문제가 반복 출제된다.

Python의 기본 컬렉션 자료형은 크게 리스트·튜플·딕셔너리·세트·문자열의 5종이다. '변경 가능(mutable)'과 '불변(immutable)'의 구분이 시험 포인트다.

자료형표기변경 가능중복순서
List`[1, 2, 3]`OOO
Tuple`(1, 2, 3)`XOO
Dict`{"k": "v"}`O키 X3.7+ 보장
Set`{1, 2, 3}`OXX
String`"abc"`XOO

슬라이싱 공식 — `s[start:stop:step]`. start 포함, stop 미포함. 생략 시 기본값은 start=0, stop=len(s), step=1. 음수 step은 역방향 순회를 의미한다.

원본 arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
0
0
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
인덱스: 0 ~ 9 · 음수 인덱스: -10 ~ -1
결과
arr[2:7]
2
3
4
5
6

start=2(포함) ~ stop=7(제외). step 미지정 = 1.

6개 프리셋([2:7]·[::2]·[1:8:2]·[::-1]·[-3:]·[:5])을 탭해 어떤 인덱스가 선택되는지 시각적으로 확인.

음수 인덱스는 뒤에서부터: -1이 마지막, -2가 뒤에서 두 번째. 음수 step은 방향을 뒤집는다.

문자열도 시퀀스 — 문자열은 리스트처럼 슬라이싱·인덱싱이 가능하지만 불변(immutable) 이다. `s[0] = 'X'` 같은 직접 수정은 에러.

실기 드릴 5문항
code실기 드릴 · 코드 추적

다음 Python 코드의 출력은?

python
s = "HELLO WORLD"
print(s[0:5])
print(s[::-1])
print(s[::2])
code실기 드릴 · 코드 추적

다음 Python 코드의 출력은?

python
a = [1, 2, 3, 4, 5]
print(sum(a[1:4]))
print(a[-1])
print(a[::-2])
code실기 드릴 · 코드 추적

다음 Python 코드의 출력은?

python
a = [1, 2, 3]
b = a
b.append(4)
print(a)
print(a is b)
code실기 드릴 · 코드 추적

다음 Python 코드의 출력은?

python
d = {"a": 1, "b": 2, "c": 3}
d["b"] = 20
d["d"] = 4
print(d.get("b"))
print(d.get("e", 0))
print(len(d))
code실기 드릴 · 코드 추적

다음 Python 코드의 출력은?

python
s1 = {1, 2, 3, 4}
s2 = {3, 4, 5, 6}
print(sorted(s1 & s2))
print(sorted(s1 | s2))
print(sorted(s1 - s2))