::는 슬라이싱(slicing) 문법 안에서 쓰는 표기다.
전체 형태는 다음과 같다.
문자열[시작:끝:간격]
리스트[시작:끝:간격]
즉, :가 세 칸을 나누고 있고, 그중에서 값을 생략할 수 있다.
예를 들어:
s = "abcdef"
print(s[1:5:2])
결과:
bd
의미는 다음과 같다.
- 시작: 1번 인덱스부터
- 끝: 5번 인덱스 전까지
- 간격: 2칸씩
그래서 b, d가 선택된다.
::가 뜻하는 것
::는 시작과 끝을 생략하고, 간격만 쓰는 형태다.
s[::2]
이 뜻은:
- 시작: 처음부터
- 끝: 끝까지
- 간격: 2
즉, 처음부터 끝까지 2칸씩 가져오라는 뜻이다.
예:
s = "abcdef"
print(s[::2])
결과:
ace
[::-1]가 중요한 이유
s[::-1]
이 뜻은:
- 시작: 끝에서부터 자동 처리
- 끝: 처음까지 자동 처리
- 간격: -1
간격이 -1이면 거꾸로 한 칸씩 이동하므로 문자열이 뒤집힌다.
예:
s = "abcde"
print(s[::-1])
결과:
edcba
자주 쓰는 형태
s[:] # 전체 복사
s[::1] # 처음부터 끝까지 1칸씩
s[::2] # 처음부터 끝까지 2칸씩
s[::-1] # 뒤집기
인덱스까지 같이 보면
문자열 "abcde"의 인덱스는 다음과 같다.
a b c d e
0 1 2 3 4
-5 -4 -3 -2 -1
그래서
s[::-1]
는 사실상
- e
- d
- c
- b
- a
순서로 읽는 것과 같다.
왜 :가 두 개냐
슬라이싱 문법이 원래 3칸 구조이기 때문이다.
[시작:끝:간격]
예를 들어 간격만 쓰고 싶으면 앞의 두 칸을 비워야 하므로 ::가 된다.
[ : : -1 ]
이걸 붙여 쓰면:
[::-1]
헷갈리는 예시
s = "abcdef"
print(s[:3]) # abc
print(s[3:]) # def
print(s[::2]) # ace
print(s[::-1]) # fedcba
print(s[1:5:2]) # bd
한 줄로 정리하면,
::는 슬라이싱에서 시작과 끝을 비워 두고 간격만 지정하는 표기다.
'Univ > Python Programming' 카테고리의 다른 글
| [문제 14] 배열에서 짝수와 홀수 구분하기 - Python 풀이 (0) | 2026.04.16 |
|---|---|
| [문제 13] 문자열 뒤집기와 대소문자 변경 - Python 풀이 (1) | 2026.04.15 |
| [문제 12] 주어진 숫자 뒤집기 - Python 풀이 (0) | 2026.04.15 |
| Python `sort()`와 `sorted()`의 차이 (0) | 2026.04.15 |
| [문제 11] 배열에서 두 수의 곱 출력하기 - Python 풀이 (0) | 2026.04.15 |