본문 바로가기

Develop/Data analysis

[Python] Day 2: 리스트, 딕셔너리, 튜플, 집합

squares = [x**2 for x in range(1, 6)]
print(squares)  # 출력: [1, 4, 9, 16, 25]​
s = {1, 2, 3, 3, 4}
# 출력 결과: {1, 2, 3, 4}

프로그래밍에서 데이터를 효율적으로 저장하고 처리하기 위해서는 적절한 자료형을 선택하는 것이 무엇보다 중요하다. 특히 파이썬은 다양한 컬렉션 자료형을 제공하며, 각각의 자료형은 고유한 특징과 활용 용도를 가지고 있다. 이번 포스팅에서는 파이썬의 핵심 컬렉션 자료형인 리스트(List), 튜플(Tuple), 딕셔너리(Dictionary), 집합(Set)의 특징과 차이점을 비교하고, 리스트 내포(List Comprehension)를 통해 보다 간결한 코드 작성 방법도 함께 살펴보고자 한다.


1. 리스트(List)

리스트는 파이썬에서 가장 널리 사용되는 자료형 중 하나로, 순서가 있으며(Ordered), 값의 변경이 가능한(Mutable) 구조이다. 중복된 값도 저장할 수 있어 유연한 데이터 처리가 가능하다.

# 리스트 생성 예시
fruits = ["apple", "banana", "cherry"]

리스트는 .append()를 통해 항목을 추가하거나, .remove()를 사용하여 특정 항목을 삭제할 수 있다. 또한 len() 함수를 통해 리스트의 길이를 쉽게 확인할 수 있다.

numbers = [1, 2, 3]
numbers.append(4)
numbers.append(5)
print(numbers)
[1, 2, 3, 4, 5]

2. 튜플(Tuple)

튜플은 리스트와 유사하지만, 값을 변경할 수 없는(Immutable) 자료형이다. 소괄호 ()를 사용하여 정의하며, 값이 고정된 데이터를 표현할 때 유용하다.

person = ("Alice", 30, "Engineer")

튜플은 변경이 불가능하기 때문에, 아래와 같은 코드는 실행 시 오류를 발생시킨다.

info = ("Bob", 25)
# info[0] = "Charlie"  # 오류 발생
print(info[1])  # 출력: 25

 

✅ 리스트 vs 튜플 비교 요약

항목  리스트 (List)  튜플 (Tuple)
괄호 [] ()
변경 여부 가능 불가능
속도 느림 빠름
사용 용도 자주 변경되는 데이터 고정된 데이터

3. 딕셔너리(Dictionary)

딕셔너리키-값(Key-Value) 구조를 가지며, 순서가 있고(Python 3.7+), 키는 중복될 수 없지만 값은 중복 가능하다. 중괄호 {}로 정의하며, 키를 통해 값을 빠르게 조회하거나 수정할 수 있다.

person = {
    "name": "Alice",
    "age": 30,
    "job": "Engineer"
}

 

  • .get() : 키에 해당하는 값을 안전하게 가져옴 (키가 없을 경우 기본값 설정 가능)
  • 키 값 수정 및 추가: person["age"] = 31, person["city"] = "Seoul"
student = {
    "name": "Tom",
    "grade": "A"
}

print(student.get("name"))          # 출력: Tom
print(student.get("age", "정보 없음"))  # 출력: 정보 없음

 

→ .get() 메서드는 존재하지 않는 키를 조회할 때 오류 대신 기본값을 반환하여 안전한 코드 작성에 유리하다.


4. 집합(Set)

집합(Set)은 수학적 집합과 유사한 개념으로, 중복을 허용하지 않으며, 순서가 없는(Unordered) 구조이다. 빠른 탐색 및 중복 제거에 유리하며, 중괄호 {}를 사용하여 정의한다.

s = {1, 2, 3, 3, 4}
# 출력 결과: {1, 2, 3, 4}

주요 연산으로는 합집합, 교집합, 차집합 등이 있으며, 데이터 간의 포함 관계를 파악할 때 매우 유용하다.

a = {1, 2, 3}
b = {3, 4, 5}

a.union(b)        # 합집합 → {1, 2, 3, 4, 5}
a.intersection(b) # 교집합 → {3}
a.difference(b)   # 차집합 → {1, 2}
nums = [1, 2, 2, 3, 3, 4]
unique_nums = list(set(nums))
print(unique_nums)  # 출력 예시: [1, 2, 3, 4]

5. 리스트 내포 (List Comprehension)

리스트 내포는 반복문과 조건문을 한 줄에 작성하여, 더 간결하고 읽기 쉬운 코드를 만들 수 있는 파이썬의 강력한 문법이다.

[표현식 for 변수 in 반복가능한객체 if 조건]
squares = [x**2 for x in range(1, 6)]
print(squares)  # 출력: [1, 4, 9, 16, 25]

→ range(1, 6)의 각 숫자에 제곱 연산을 적용하여 리스트 생성

evens = [x for x in range(10) if x % 2 == 0]
print(evens)  # 출력: [0, 2, 4, 6, 8]

→ 조건문을 활용하여 짝수만 추출한 리스트 생성


이번 포스팅에서는 파이썬의 대표적인 컬렉션 자료형인 리스트, 튜플, 딕셔너리, 집합리스트 내포 문법에 대해 살펴보았다. 이들 자료형은 각각의 목적과 특성에 따라 적절하게 선택해야 하며, 이를 통해 코드의 효율성과 가독성을 동시에 높일 수 있다.

다음은 오늘 학습한 내용을 간략히 정리한 표이다:

자료형 특징 요약 주요 메서드 및 기능
리스트 순서 있음, 변경 가능 .append(), .remove()
튜플 순서 있음, 변경 불가능 불변 자료 저장에 적합
딕셔너리 키-값 구조, 키 중복 불가 .get(), 값 수정 및 추가
집합 순서 없음, 중복 없음 .union(), .intersection()
리스트 내포 반복문 간결화, 조건 필터링 가능 [x for x in ...]

각 자료형의 특성을 정확히 이해하고 상황에 맞게 사용하는 것이 파이썬 데이터 분석의 기초를 탄탄히 다지는 첫걸음이 될 것이다.