리스트(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)는 키-값 쌍으로 데이터를 저장하며, 키를 통해 데이터를 빠르게 접근하거나 수정할 수 있는 자료형입니다.
'Python' 카테고리의 다른 글
[Python] 04. 함수 (0) | 2024.09.29 |
---|---|
[Python] 03. 제어문 ( 조건문, 반복문, 예외 처리 ) (1) | 2024.09.28 |
[Python] 02. 데이터 타입, 변수 , 연산자 (4) | 2024.09.28 |
[Python] 01. 파이썬 개념 , 프로그램 설치 (2) | 2024.09.28 |