에듀테크 프로젝트 대시보드
시퀀스 공통 연산
list·tuple·str·range 가 공유하는 연산과 시퀀스 대상 내장함수.
| 연산 | 의미 |
|---|---|
s[i], s[i:j:k] | 인덱싱·슬라이싱 |
s + t | 연결 (list, tuple, str) |
s * n | 반복 |
x in s | 포함 여부 |
len(s), min(s), max(s) | 길이·최소·최대 |
s.index(x), s.count(x) | 위치·개수 |
s = list(range(10)) # [0..9]
s[2:8:2] # => [2, 4, 6]
s[::-1] # 뒤집기
s[-3:] # 마지막 3개
s[:-3] # 마지막 3개 빼고
# slice 객체로 재사용
first_two = slice(0, 2)
s[first_two] # => [0, 1]
# 리스트에서 슬라이스 대입/삭제
s[2:5] = [] # 삭제
del s[::2] # 짝수 인덱스 삭제for i, ch in enumerate("abc"):
print(i, ch) # 0 a / 1 b / 2 c
for i, v in enumerate(items, start=1): # 1부터
print(f"{i}. {v}")
# range(len(x)) 관용구는 피하고 enumerate 사용names = ["김", "이", "박"]
ages = [20, 25, 30]
for name, age in zip(names, ages):
...
# 가장 짧은 것에 맞춤 / strict=True 로 길이 불일치 에러 (3.10+)
list(zip([1, 2, 3], ["a", "b"])) # => [(1,'a'), (2,'b')]
# 언집 (전치)
pairs = [(1, 'a'), (2, 'b')]
nums, chars = zip(*pairs) # (1, 2), ('a', 'b')sorted([3, 1, 2]) # => [1, 2, 3] (새 리스트)
sorted(words, key=str.lower, reverse=True)
sorted(people, key=lambda p: (p.age, p.name)) # 다중 기준
list(reversed([1, 2, 3])) # => [3, 2, 1]
any(x < 0 for x in nums) # 하나라도 참
all(x < 0 for x in nums) # 전부 참 (빈 시퀀스면 True)
sum(nums, start=0)
"".join(reversed("abc")) # => 'cba' range(5) # 0,1,2,3,4
range(2, 8) # 2..7
range(0, 10, 2) # 0,2,4,6,8
range(10, 0, -1) # 10..1
# range 는 지연 시퀀스 — 메모리 O(1)
1_000_000 in range(0, 2_000_000, 2) # => True (계산으로 판정)
list(range(3)) # 실제 리스트가 필요할 때만