Python

[Python] 05. 리스트(List), 튜플(Tuple), 집합(Set), 딕셔너리(Dictionary)

변쌤(이젠강남) 2024. 9. 29. 13:24
반응형

리스트(List), 튜플(Tuple), 집합(Set), 딕셔너리(Dictionary)

 

 

컨테이너 자료형은 여러 값을 하나의 변수로 묶어서 저장할 수 있는 자료형을 의미합니다. 대표적인 컨테이너 자료형으로는 리스트(List), 튜플(Tuple), 집합(Set), 딕셔너리(Dictionary) 등이 있습니다. 

 

1. 리스트 (List)

리스트는 Python에서 가장 많이 사용되는 컨테이너 자료형 중 하나로, 여러 값을 순서대로 저장할 수 있습니다. 리스트는 **가변적(mutable)**이며, 요소를 추가, 삭제, 수정할 수 있습니다.

  • 정의: 대괄호 [ ]로 정의하며, 요소들은 쉼표로 구분됩니다.
  • 특징:
    • 가변형: 리스트의 요소를 변경, 추가, 삭제할 수 있습니다.
    • 중복 허용: 리스트 내에 중복된 값을 저장할 수 있습니다.
    • 순서가 있는 자료형: 리스트의 각 요소는 인덱스를 가지고 있으며, 인덱스를 사용하여 접근할 수 있습니다.

 

  • 리스트 메서드
    • append(): 리스트에 요소를 추가
    • remove(): 특정 요소를 삭제
    • pop(): 마지막 요소를 꺼내고 제거
    • insert(): 특정 위치에 요소 삽입
    • sort(): 리스트를 오름차순으로 정렬
    • reverse(): 리스트의 순서를 반대로 뒤집음

 

 

# 리스트 정의
fruits = ["apple", "banana", "cherry"]

# 리스트 요소 접근 (인덱스는 0부터 시작)
print(fruits[0])  # 출력: apple

# 리스트 요소 수정
fruits[1] = "orange"
print(fruits)  # 출력: ['apple', 'orange', 'cherry']

# 리스트에 요소 추가
fruits.append("grape")
print(fruits)  # 출력: ['apple', 'orange', 'cherry', 'grape']

# 리스트 요소 삭제
fruits.remove("orange")
print(fruits)  # 출력: ['apple', 'cherry', 'grape']

# 리스트의 길이 확인
print(len(fruits))  # 출력: 3

# 리스트의 여러 기능 사용
numbers = [1, 2, 3, 4]
print(numbers + [5, 6])   # 리스트 합치기, 출력: [1, 2, 3, 4, 5, 6]
print(numbers * 2)        # 리스트 반복, 출력: [1, 2, 3, 4, 1, 2, 3, 4]

 

 

2. 튜플 (Tuple)

튜플은 리스트와 비슷하지만, 불변형(immutable) 자료형으로, 한 번 생성되면 그 값을 변경할 수 없습니다. 튜플은 데이터의 무결성을 보장하거나, 변경이 필요 없는 데이터를 저장할 때 유용합니다.

  • 정의: 소괄호 ( )로 정의하며, 요소들은 쉼표로 구분됩니다.
  • 특징:
    • 불변형: 튜플의 요소를 변경, 추가, 삭제할 수 없습니다.
    • 중복 허용: 튜플 내에 중복된 값을 저장할 수 있습니다.
    • 순서가 있는 자료형: 리스트처럼 각 요소는 인덱스를 가지고 있습니다.

튜플의 주요 특징

  • 튜플은 불변형이므로, 요소를 변경할 수 없습니다. 예를 들어, 데이터를 실수로 변경하는 것을 방지하고 싶을 때 유용합니다.
  • 튜플은 리스트보다 메모리 사용량이 적고, 성능이 약간 더 좋습니다.
# 튜플 정의
point = (1, 2, 3)

# 튜플 요소 접근
print(point[0])  # 출력: 1

# 튜플은 불변형이라 요소를 수정할 수 없습니다.
# point[0] = 10  # 오류 발생

# 튜플은 리스트와 동일하게 인덱싱과 슬라이싱이 가능
print(point[1:3])  # 출력: (2, 3)

# 하나의 요소를 가진 튜플은 쉼표를 붙여서 정의해야 합니다.
single_element_tuple = (5,)
print(single_element_tuple)  # 출력: (5,)

# 튜플의 길이 확인
print(len(point))  # 출력: 3

 

 

리스트와 튜플  비교 

특징 리스트 ( List ) 튜플 ( Tuple )
정의 [1, 2, 3] (1, 2, 3)
변경 가능 여부 가변형 (mutable) 불변형 (immutable)
요소 추가 가능 (append(), insert()) 불가능
요소 삭제 가능 (remove(), pop()) 불가능
사용 목적 데이터를 변경하거나 추가할 때 데이터의 무결성을 유지할 때
메모리 효율성 상대적으로 메모리 사용이 많음 상대적으로 메모리 사용이 적음
성능 다소 느림 다소 빠름

 

 

리스트와 튜플 사용 예시

리스트 사용 예시: 데이터의 수정이 필요한 경우

리스트는 데이터의 변경이 자주 발생하는 경우에 유용합니다. 예를 들어, 사용자의 입력 데이터를 저장하고, 나중에 수정할 필요가 있을 때 리스트를 사용할 수 있습니다.

 

shopping_list = ["milk", "bread", "eggs"]

# 새로운 항목 추가
shopping_list.append("butter")
print(shopping_list)  # 출력: ['milk', 'bread', 'eggs', 'butter']

# 항목 삭제
shopping_list.remove("bread")
print(shopping_list)  # 출력: ['milk', 'eggs', 'butter']

 

 

튜플 사용 예시: 데이터의 변경을 방지할 경우

튜플은 변경이 필요 없는 데이터를 저장할 때 유용합니다. 예를 들어, 좌표나 색상 값처럼 한 번 정의하면 수정할 필요가 없는 데이터에 적합합니다.

 

# 좌표를 나타내는 튜플
coordinates = (10, 20)

# 좌표 값에 접근 가능하지만 변경은 불가능
print(coordinates[0])  # 출력: 10

# coordinates[0] = 30  # 오류 발생: 튜플은 불변형이므로 수정 불가

 

 

 

  • 리스트가변형 자료형으로, 값의 수정, 추가, 삭제가 가능하며, 자주 변경될 수 있는 데이터를 저장하는 데 적합합니다.
  • 튜플불변형 자료형으로, 한 번 정의된 값은 변경할 수 없으며, 값이 변경되지 않아야 하는 데이터를 저장하는 데 적합합니다.

 

 

 


 

집합 (Set) 딕셔너리 (Dictionary)

 

집합(Set)과 딕셔너리(Dictionary)는 컨테이너 자료형으로, 각각 고유한 방식으로 데이터를 저장하고 관리하는 기능을 제공합니다. 이 두 자료형은 특정 조건에서 매우 효율적으로 사용할 수 있으며, 리스트나 튜플과는 다른 특징들을 가지고 있습니다.

 

1. 집합 (Set)

**집합(Set)**은 순서가 없고, 중복을 허용하지 않는 데이터 구조입니다. 수학에서의 집합과 유사한 개념을 가지고 있으며, 요소 간의 포함 여부나 중복을 처리할 때 유용합니다.

  • 정의: 중괄호 {}를 사용하여 정의하거나, set() 함수를 사용하여 생성합니다.
  • 특징:
    • 중복된 값을 허용하지 않음: 집합 내에는 동일한 값이 여러 번 존재할 수 없습니다.
    • 순서가 없음: 요소들이 순서 없이 저장되므로, 인덱싱을 사용할 수 없습니다.
    • 가변형: 집합에 요소를 추가하거나 삭제할 수 있습니다.
# 집합 정의
my_set = {1, 2, 3, 4}
print(my_set)  # 출력: {1, 2, 3, 4}

# 중복된 요소를 넣으면 자동으로 제거됨
my_set = {1, 2, 2, 3, 4, 4}
print(my_set)  # 출력: {1, 2, 3, 4}

# 집합에 요소 추가
my_set.add(5)
print(my_set)  # 출력: {1, 2, 3, 4, 5}

# 집합에 요소 삭제
my_set.remove(3)
print(my_set)  # 출력: {1, 2, 4, 5}

# 집합의 길이
print(len(my_set))  # 출력: 4

 

 

집합의 주요 연산

집합은 수학적인 집합 연산을 지원하며, 다음과 같은 연산을 수행할 수 있습니다.

A = {1, 2, 3}
B = {3, 4, 5}

# 합집합 (Union)
print(A | B)  # 출력: {1, 2, 3, 4, 5}
print(A.union(B))  # 동일한 결과

# 교집합 (Intersection)
print(A & B)  # 출력: {3}
print(A.intersection(B))  # 동일한 결과

# 차집합 (Difference)
print(A - B)  # 출력: {1, 2}
print(A.difference(B))  # 동일한 결과

# 대칭차집합 (Symmetric Difference)
print(A ^ B)  # 출력: {1, 2, 4, 5}
print(A.symmetric_difference(B))  # 동일한 결과

 

집합은 중복을 제거할 때 유용하며, 특정 요소의 포함 여부를 빠르게 검사할 수 있습니다.

 

 

2. 딕셔너리 (Dictionary)

**딕셔너리(Dictionary)**는 키(key)-값(value) 쌍으로 데이터를 저장하는 자료형입니다. 리스트나 튜플처럼 순서가 아닌 키를 기준으로 데이터를 저장하고 접근할 수 있습니다.

  • 정의: 중괄호 {}를 사용하여 정의하며, 각 키와 값은 :로 구분됩니다. dict() 함수로도 생성할 수 있습니다.
  • 특징:
    • 키-값 쌍: 딕셔너리는 각 키에 대해 하나의 값만을 저장합니다.
    • 키는 중복될 수 없음: 딕셔너리 내의 키는 유일해야 하며, 중복된 키를 사용할 수 없습니다.
    • 키는 불변형이어야 함: 키는 숫자, 문자열, 튜플과 같은 불변형 자료형이어야 합니다.
    • 가변형: 딕셔너리에 값을 추가하거나 삭제할 수 있습니다.
# 딕셔너리 정의
my_dict = {"name": "Alice", "age": 25, "city": "New York"}

# 값 접근 (키를 사용)
print(my_dict["name"])  # 출력: Alice
print(my_dict.get("age"))  # 출력: 25

# 딕셔너리에 값 추가 또는 수정
my_dict["email"] = "alice@example.com"
print(my_dict)  # 출력: {'name': 'Alice', 'age': 25, 'city': 'New York', 'email': 'alice@example.com'}

# 키가 이미 존재하는 경우 값이 수정됨
my_dict["age"] = 26
print(my_dict)  # 출력: {'name': 'Alice', 'age': 26, 'city': 'New York', 'email': 'alice@example.com'}

# 딕셔너리에서 값 삭제
del my_dict["city"]
print(my_dict)  # 출력: {'name': 'Alice', 'age': 26', 'email': 'alice@example.com'}

# 키 목록 가져오기
print(my_dict.keys())  # 출력: dict_keys(['name', 'age', 'email'])

# 값 목록 가져오기
print(my_dict.values())  # 출력: dict_values(['Alice', 26, 'alice@example.com'])

# 키-값 쌍 가져오기
print(my_dict.items())  # 출력: dict_items([('name', 'Alice'), ('age', 26), ('email', 'alice@example.com')])

 

 

메서드

  • get(key, default): 키에 해당하는 값을 반환하며, 키가 없을 경우 기본값을 반환합니다.
  • keys(): 딕셔너리의 모든 키를 반환합니다.
  • values(): 딕셔너리의 모든 값을 반환합니다.
  • items(): 딕셔너리의 모든 키-값 쌍을 반환합니다.
  • pop(key): 키에 해당하는 값을 반환하고, 해당 키-값 쌍을 딕셔너리에서 제거합니다.
  • update(dict2): 다른 딕셔너리를 병합하여 업데이트합니다.

 

집합(Set)과 딕셔너리(Dictionary) 비교

특징 집합(Set) 딕셔너리(Dictionary)
정의 {1, 2, 3} {'key': 'value'}
데이터 구조 순서 없는 중복 없는 값 모음 키-값(key-value) 쌍
중복 허용 여부 중복 불허 키는 중복 불허, 값은 중복 가능
순서 유지 여부 순서 없음 순서 없음 (Python 3.7 이후부터는 삽입 순서 유지)
주요 연산 합집합, 교집합, 차집합 등 키를 통한 값 접근, 추가, 삭제

 

 

집합(Set)과 딕셔너리(Dictionary) 사용 예시

집합 사용 예시: 중복 제거 및 집합 연산

집합은 중복된 데이터를 제거하거나, 두 데이터 간의 관계(합집합, 교집합 등)를 처리할 때 유용합니다.

 

# 리스트에서 중복 제거
data = [1, 2, 3, 3, 4, 5, 5]
unique_data = set(data)
print(unique_data)  # 출력: {1, 2, 3, 4, 5}

# 두 집합의 교집합
A = {1, 2, 3}
B = {2, 3, 4}
common_elements = A & B
print(common_elements)  # 출력: {2, 3}

 

딕셔너리 사용 예시: 데이터의 매핑

딕셔너리는 데이터를 키와 값으로 매핑하여 저장할 때 유용합니다. 예를 들어, 사용자의 정보나 설정 값을 저장할 때 많이 사용됩니다.

 

# 사용자의 정보를 저장하는 딕셔너리
user_info = {
    "name": "Alice",
    "age": 25,
    "email": "alice@example.com"
}

# 값에 접근
print(user_info["name"])  # 출력: Alice

# 값 업데이트
user_info["age"] = 26
print(user_info)  # 출력: {'name': 'Alice', 'age': 26, 'email': 'alice@example.com'}

 

 

 

  •  집합(Set) 은 중복을 허용하지 않고 순서가 없는 데이터 구조로, 집합 연산(합집합, 교집합 등)이 필요한 경우에 유용합니다.
  •  딕셔너리(Dictionary)는 키-값 쌍으로 데이터를 저장하며, 키를 통해 데이터를 빠르게 접근하거나 수정할 수 있는 자료형입니다.

 

반응형