레슨 4 / 9·20분
리스트, 딕셔너리, 세트, 튜플 심화
리스트 심화
Python 리스트는 다양한 내장 메서드를 제공합니다. 정렬, 역순, 복사 등 자주 쓰이는 조작법을 알아봅시다.
python
# 리스트 메서드 심화
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
# 정렬
numbers.sort()
print(numbers) # [1, 1, 2, 3, 4, 5, 6, 9]
# 역순 정렬
numbers.sort(reverse=True)
print(numbers) # [9, 6, 5, 4, 3, 2, 1, 1]
# 원본을 유지하며 정렬
original = [3, 1, 4, 1, 5]
sorted_list = sorted(original)
print(original) # [3, 1, 4, 1, 5]
print(sorted_list) # [1, 1, 3, 4, 5]
# 리스트 언패킹
first, *rest = [1, 2, 3, 4, 5]
print(first) # 1
print(rest) # [2, 3, 4, 5]
# 중첩 리스트 (2D)
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matrix[1][2]) # 6튜플 (Tuple)
튜플은 리스트와 비슷하지만 변경 불가능(immutable)합니다. 소괄호 ()로 생성하며, 딕셔너리의 키로 사용할 수 있습니다.
python
# 튜플 생성
point = (3, 4)
rgb = (255, 128, 0)
# 언패킹
x, y = point
print(x, y) # 3 4
# 함수에서 여러 값 반환
def divide(a, b):
return a // b, a % b
quotient, remainder = divide(17, 5)
print(quotient, remainder) # 3 2
# 네임드 튜플
from collections import namedtuple
Point = namedtuple("Point", ["x", "y"])
p = Point(3, 4)
print(p.x, p.y) # 3 4세트 (Set)
세트는 중복을 허용하지 않는 순서 없는 집합입니다. 합집합, 교집합, 차집합 등 수학적 집합 연산을 지원합니다.
python
# 세트 생성
fruits = {"사과", "바나나", "포도", "사과"} # 중복 제거
print(fruits) # {"사과", "바나나", "포도"}
# 세트 연산
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print(a | b) # 합집합: {1, 2, 3, 4, 5, 6}
print(a & b) # 교집합: {3, 4}
print(a - b) # 차집합: {1, 2}
print(a ^ b) # 대칭차: {1, 2, 5, 6}
# 멤버십 테스트 (리스트보다 빠름)
large_set = set(range(100000))
print(99999 in large_set) # True (O(1))
# 리스트에서 중복 제거
nums = [1, 2, 2, 3, 3, 3]
unique = list(set(nums))
print(unique) # [1, 2, 3]딕셔너리 심화
python
# defaultdict - 기본값 자동 생성
from collections import defaultdict
word_count = defaultdict(int)
for word in ["apple", "banana", "apple", "cherry", "banana", "apple"]:
word_count[word] += 1
print(dict(word_count)) # {"apple": 3, "banana": 2, "cherry": 1}
# Counter - 빈도수 세기
from collections import Counter
c = Counter("abracadabra")
print(c.most_common(3)) # [("a", 5), ("b", 2), ("r", 2)]
# 딕셔너리 병합 (Python 3.9+)
defaults = {"color": "red", "size": 10}
overrides = {"size": 20, "weight": 5}
merged = defaults | overrides
print(merged) # {"color": "red", "size": 20, "weight": 5}- •
list-- 순서 있는 변경 가능한 시퀀스[] - •
tuple-- 순서 있는 변경 불가능한 시퀀스() - •
set-- 중복 없는 순서 없는 집합{} - •
dict-- 키-값 쌍의 매핑{k: v} - •
frozenset-- 변경 불가능한 세트 (딕셔너리 키로 사용 가능)
💡
데이터가 변경되지 않아야 한다면 리스트 대신 튜플을 사용하세요. 실수로 값을 바꾸는 것을 방지하고, 딕셔너리 키로도 사용할 수 있습니다.