정보처리기사/프로그래밍 언어 활용

파이썬의 리스트(list), 튜플(tuple), 딕셔너리(dict), 셋(set)

glorypang 2025. 10. 15. 22:56
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