문법 · Python · beginner

리스트·슬라이스·문자열

슬라이스 문법, 불변 문자열, split/join, 정렬 키.

배우기 · Python 문법 · 15분 · 3/9 · python · 리스트 · 문자열

이 트랙 목차 (9)
  1. 1. 들여쓰기·타입·변수: Python 기초
  2. 2. 조건·반복: if, for, while, range
  3. 3. 리스트·슬라이스·문자열
  4. 4. 딕셔너리·집합·컴프리헨션
  5. 5. 함수·기본인자·헬퍼 나누기
  6. 6. 자주 쓰는 표준: collections 맛보기
  7. 7. 예외 기초: try · except · 입력 가드
  8. 8. itertools 맛보기: chain · product · combinations
  9. 9. 정렬 key: 커스텀 비교

슬라이스

s[1:4]      # 1..3 (끝 미포함)
s[:3]       # 앞에서 3
s[-2:]      # 뒤에서 2
s[::-1]     # 뒤집기
arr[1:-1]   # 양끝 제외

음수 인덱스는 끝에서부터입니다. s[-1]은 마지막 문자.

문자열은 불변

# s[0] = 'z'  # TypeError
t = 'z' + s[1:]
chars = list(s)
chars[0] = 'z'
t = ''.join(chars)

파싱 패턴

lines = input.strip().splitlines()
nums = list(map(int, lines[0].split()))
n, *rest = nums

split()는 공백·탭을 알아서 나눕니다. split(' ')는 연속 공백에 빈 토큰이 생깁니다.

정렬

arr.sort()                    # 제자리
sorted(arr)                   # 새 리스트
arr.sort(key=lambda x: -x)    # 내림차순 숫자
arr.sort(key=len)             # 길이

튜플 키로 다중 기준: key=lambda x: (x[0], -x[1]).

in · find

'ab' in s
s.find('ab')   # 없으면 -1
s.startswith('ab')

리스트 x in arr는 O(n)입니다. 멤버십이 잦으면 set을 쓰세요.

슬라이스 복사

b = a[:]       # 얕은 복사
b = a[1:-1]

스택·큐 감각

리스트 끝 append/pop은 O(1)에 가깝습니다.
앞을 pop(0)하면 O(n). 앞 제거가 많으면 collections.deque.

문자열 ↔ 리스트

chars = list(s)
chars[0] = "Z"
s2 = "".join(chars)

관련 짧은 원리

관련 문제