본문 바로가기
데이터 AI 인사이트 👩🏻‍💻/정리노트

파이썬 자료구조 - 튜플, 딕셔너리, set, 리스트, 클래스, 객체지향언어 특징

by Hayley S 2025. 1. 28.

1. 리스트(List)

리스트는 여러 값을 하나의 변수에 순서대로 저장할 수 있는 데이터 구조입니다. 리스트는 가변적이며, 중복된 값도 저장할 수 있습니다.

  • 표현 방법: [ ] 대괄호를 사용합니다.
  • 특징:
    • 순서(인덱스)가 있다: 요소는 인덱스를 통해 접근할 수 있습니다.
    • 가변성(Mutable): 리스트의 요소를 추가, 삭제, 수정할 수 있습니다.
    • 중복 허용: 리스트는 같은 값을 여러 번 포함할 수 있습니다.
  • 사용 예시:
  • fruits = ['apple', 'banana', 'cherry'] fruits.append('orange') # 요소 추가 print(fruits) # 출력: ['apple', 'banana', 'cherry', 'orange']

 

2. 튜플(Tuple)

튜플은 리스트와 비슷하지만, 값이 **불변(immutable)**하는 것이 특징입니다. 한 번 생성된 튜플은 수정할 수 없습니다. 튜플은 주로 값이 변하지 않아야 할 때 사용됩니다.

  • 표현 방법: ( ) 소괄호를 사용합니다.
  • 특징:
    • 순서가 있다: 요소에 인덱스로 접근 가능합니다.
    • 불변성(Immutable): 생성 후 값을 변경할 수 없습니다.
    • 중복 허용: 중복된 요소를 가질 수 있습니다.
  • 사용 예시:
  • point = (3, 4) # point[0] = 5 # 오류 발생: 튜플은 수정할 수 없습니다. print(point) # 출력: (3, 4)

 

3. 집합(Set)

집합 중복되지 않는 데이터를 저장하는 데이터 구조로, 수학의 집합과 같은 개념입니다. 요소들 간의 순서가 없기 때문에 인덱스를 사용할 수 없으며, 중복을 제거하고 싶을 때 유용합니다.

  • 표현 방법: { } 중괄호를 사용합니다.
  • 특징:
    • 순서가 없다: 순서가 보장되지 않으며, 인덱스로 접근할 수 없습니다.
    • 가변성(Mutable): 요소를 추가하거나 제거할 수 있습니다.
    • 중복 허용 안 함: 중복된 요소는 자동으로 제거됩니다.
  • 사용 예시:
  • numbers = {1, 2, 3, 3, 4} print(numbers) # 출력: {1, 2, 3, 4} (중복된 요소 3이 하나로 합쳐짐) numbers.add(5) # 요소 추가 print(numbers) # 출력: {1, 2, 3, 4, 5}

 

4. 딕셔너리(Dictionary)

딕셔너리는 **키-값 쌍(Key-Value Pair)**으로 데이터를 저장하는 구조입니다. 각각의 는 고유해야 하며, 그 키에 연결된 이 있습니다. 키를 통해 빠르게 특정 값을 찾거나 수정할 수 있습니다.

  • 표현 방법: { } 중괄호를 사용하며, 키: 값 형태로 요소를 저장합니다.
  • 특징:
    • 순서가 없다 (Python 3.6 이하): 딕셔너리는 원래 순서를 보장하지 않았지만, Python 3.7부터 삽입 순서를 유지합니다.
    • 가변성(Mutable): 값을 추가하거나 삭제할 수 있습니다.
    • 고유한 키: 키는 중복될 수 없습니다.
  • 사용 예시:
  • student = {'name': 'John', 'age': 25, 'major': 'Physics'} print(student['name']) # 출력: John student['age'] = 26 # 값 수정 student['grade'] = 'A' # 새로운 키-값 추가 print(student) # 출력: {'name': 'John', 'age': 26, 'major': 'Physics', 'grade': 'A'}

 

5. 클래스(Class)

클래스 객체 지향 프로그래밍에서 사용되는 개념으로, 특정 객체를 만들기 위한 설계도입니다. 클래스는 속성(Attributes)과 행동(Methods)을 정의하여, 여러 비슷한 속성과 행동을 갖는 객체를 쉽게 만들어줍니다. 클래스는 데이터를 묶고, 이를 다루기 위한 기능을 제공하는 좀 더 복잡한 구조입니다.

  • 표현 방법: class 키워드를 사용해 정의합니다.
  • 특징:
    • 데이터와 기능의 묶음: 클래스는 데이터와 해당 데이터를 처리하는 함수를 함께 묶어서 관리합니다.
    • 객체 생성 가능: 클래스를 사용해서 객체(인스턴스)를 만들어낼 수 있습니다.
    • 재사용성: 클래스를 통해 여러 인스턴스를 생성하고, 재사용할 수 있습니다.
  • 사용 예시:
  • class Car: def __init__(self, brand, model): self.brand = brand self.model = model def drive(self): print(f"{self.brand} {self.model}이(가) 운전 중입니다.") my_car = Car("Hyundai", "Sonata") my_car.drive() # 출력: Hyundai Sonata이(가) 운전 중입니다.

 

비교 요약

데이터 구조 표현 방법 특징 사용 예시

리스트 [ ] 순서가 있고, 가변적이며 중복 허용 순서 있는 데이터 목록 (예: 학생 명단)
튜플 ( ) 순서가 있고, 불변적이며 중복 허용 변경되지 않는 값 목록 (예: 좌표, RGB 색상)
집합 { } 순서가 없고, 중복을 허용하지 않으며 가변적 고유한 값 저장 (예: 유일한 태그 목록)
딕셔너리 {키: 값} 키-값 쌍으로 저장하며, 순서가 없고 고유한 키를 가짐 키와 연결된 데이터 저장 (예: 학생 정보)
클래스 class 키워드 사용 데이터와 관련된 기능(메서드)을 하나로 묶어 사용 가능 데이터와 행동을 묶은 객체 생성 (예: 자동차 클래스)

 

언제 무엇을 사용할까?

  • 리스트: 데이터를 순서대로 저장하고 자주 수정(추가, 삭제 등)해야 할 때 사용합니다. 예를 들어, 여러 학생의 이름을 순서대로 관리할 때 사용합니다.
  • 튜플: 데이터를 수정하지 않을 때 사용합니다. 예를 들어, 위도와 경도를 나타내는 좌표처럼 변하지 않는 데이터를 저장할 때 사용합니다.
  • 집합: 중복된 데이터를 제거하거나 교집합, 합집합 등의 집합 연산이 필요할 때 사용합니다. 예를 들어, 중복된 태그나 고유한 값들을 관리하고 싶을 때 사용합니다.
  • 딕셔너리: 키-값 쌍으로 데이터를 저장해야 하고, 빠르게 특정 값을 찾아야 할 때 사용합니다. 예를 들어, 학생 정보(이름, 나이, 학번 등)를 관리할 때 사용합니다.
  • 클래스: 더 복잡한 데이터 구조와 그 데이터를 다루는 기능을 함께 정의하고 싶을 때 사용합니다. 예를 들어, 자동차를 관리할 때 자동차의 정보(브랜드, 모델)와 기능(시동 걸기, 멈추기)을 모두 포함하고 싶다면 클래스를 사용합니다.

각각의 자료 구조는 용도에 따라 매우 유용하게 쓰이기 때문에 어떤 데이터를 다루고 어떻게 활용할지를 기준으로 알맞은 자료 구조를 선택하는 것이 중요합니다.