728x90
반응형
SMALL
1) 리스트 list
- 정의: 순서O, 가변(mutable), 중복 허용하는 가장 범용적인 시퀀스.
- 리터럴: [ ... ]
- 대표 예:
nums = [1, 2, 3]
nums.append(4) # [1,2,3,4]
nums[0] = 10 # 치환 가능
nums.extend([5,6]) # 여러 개 추가
del nums[1] # 요소 삭제
nums[::-1] # 슬라이싱(역순)
흔한 메서드
- 추가/삽입/삭제: append, extend, insert, pop, remove, clear
- 정렬/검색: sort(key=..., reverse=...), reverse, index, count
- 생성/변환: 리스트 컴프리헨션 [f(x) for x in it if cond]
언제 쓰나
- 순서가 중요하고, 자주 추가/삭제/치환이 필요한 컬렉션.
- 큐/스택 간단 구현(스택: append/pop(), 큐는 collections.deque 권장).
2) 튜플 tuple
- 정의: 순서O, 불변(immutable) 시퀀스. 해시 가능(내부도 불변이면) → 딕셔너리 키로 사용 가능.
- 리터럴: ( ... ) 혹은 콤마(,) 자체가 튜플을 만듦.
- 장점: 불변 → 안전한 전달, 딕셔너리 키로 적합, 함수가 여러 값 반환할 때 관례적으로 사용.
t = (1, 2, 3)
t2 = 1, 2, 3 # 괄호 생략 가능
single = (1,) # 한 원소 튜플은 콤마 필수
a, b = (10, 20) # 언패킹
언제 쓰나
- 변하지 않아야 하는 레코드/좌표/키 등.
- 데이터 무결성, 다중 반환값, 해시 가능한 복합 키.
3) 딕셔너리 dict
- 정의: 키→값 매핑. 키는 해시 가능(불변형 권장), 값은 아무 타입 가능.
- 파이썬 3.7+: 삽입 순서 유지(논리적으로 보장).
- 리터럴: {key: value, ...}
user = {"id": 1, "name": "Ada"}
user["email"] = "a@b.c" # 추가/갱신
user.get("age", 0) # 기본값 반환
user.update({"name": "Alan"})
for k, v in user.items(): ... # 반복
흔한 메서드
- 조회: get, keys, values, items
- 갱신: update, setdefault(키 없을 때 기본값 넣고 반환)
- 삭제: pop, popitem(마지막), clear
언제 쓰나
- 빠른 키 기반 검색/갱신이 필요할 때.
- 구조적 데이터(레코드) 표현, 카운팅/그룹핑(→ collections.Counter, defaultdict).
4) 집합 set
- 정의: 중복 없는 원소들의 모음, 순서 없음(unordered), 가변(mutable).
해시 가능한(불변) 값만 원소로 가능(예: int, str, tuple 등). - 리터럴: { ... }
- ⚠️ 빈 집합은 set() ( {} 는 딕셔너리!)
- 대표 예
s = {1, 2, 3}
s.add(3) # {1,2,3} (중복 무시)
s.add(4) # {1,2,3,4}
s.remove(2) # {1,3,4} (없으면 KeyError)
s.discard(99) # 존재 안 해도 조용히 무시
3 in s # True (멤버십 O(1) 평균)
- 자주 쓰는 연산(집합 연산자)
a = {1, 2, 3}; b = {3, 4, 5}
a | b # 합집합 -> {1,2,3,4,5}
a & b # 교집합 -> {3}
a - b # 차집합 -> {1,2}
a ^ b # 대칭차(합-교) -> {1,2,4,5}
- 흔한 메서드
- 추가/삭제: add, update(iterable), remove, discard, pop, clear
- 관계 검사: issubset, issuperset, isdisjoint
- 집합 연산 메서드: union, intersection, difference, symmetric_difference
요약
- list: 가변·순서O, 범용 시퀀스
- tuple: 불변·순서O, 키/레코드/다중 반환
- dict: 키→값 매핑, 3.7+ 삽입 순서 유지, 키 조회 O(1)
- set: 중복 없음·순서 없음, 멤버십/집합 연산 빠름, 빈 집합은 set()
728x90
반응형
LIST