목록
- 튜플(tuple)이란?
- 괄호 없이 튜플 사용하기
- 튜플 변수 값 교환
- 튜플로 함수 값 반환
- 리스트와 딕셔너리에서 튜플 사용하기
- 객체별 특징
튜플(tuple)이란?
튜플(tuple)은 목록과 유사하지만 몇 가지 중요한 차이점이 있는 내장 Python 데이터 구조입니다. 튜플은 둥근 괄호(소괄호)로 묶인 정렬되고 변경할 수 없는 요소 모음입니다. 튜플의 요소는 다른 튜플, 목록 또는 사전을 포함하여 다양한 데이터 유형일 수 있습니다.
다음은 튜플의 몇 가지 주요 기능입니다.
- 정렬됨
튜플은 요소의 순서를 유지하므로 목록처럼 인덱스를 사용하여 요소에 액세스할 수 있습니다. - 불변성
리스트와 달리 튜플은 생성 후 수정할 수 없습니다. 즉, 튜플에서 요소를 추가, 제거 또는 변경할 수 없습니다. 이 불변성은 시간이 지남에 따라 변경되지 않아야 하는 요소 모음을 만들려는 경우에 유용할 수 있습니다. - 목록보다 빠름
튜플은 변경할 수 없기 때문에 특히 대용량 데이터 세트의 경우 목록보다 메모리 효율적이고 처리 속도가 빠릅니다. - 사전에서 키로 사용할 수 있습니다.
튜플은 해시 가능하고 변경할 수 없기 때문에 목록과 달리 사전에서 키로 사용할 수 있습니다.
다음은 튜플을 만들고 사용하는 방법의 예입니다.
# 튜플 생성하기
my_tuple = (1, "apple", 3.14)
# 인덱스를 이용한 접근
print(my_tuple[1]) # Output: apple
# 튜플 언패킹
a, b, c = my_tuple
print(a, b, c) # Output: 1 apple 3.14
# 튜플 연결
new_tuple = my_tuple + (4, "banana")
print(new_tuple) # Output: (1, 'apple', 3.14, 4, 'banana')
# 튜플 길이
print(len(new_tuple)) # Output: 5
# 중첩된 튜플
nested_tuple = (1, 2, (3, 4))
print(nested_tuple) # Output: (1, 2, (3, 4))
튜플은 변경할 수 없기 때문에 목록에서와 같이 '추가', '확장' 또는 '제거'와 같은 작업을 수행할 수 없습니다. 튜플을 수정하려면 일반적으로 원하는 변경 내용으로 새 튜플을 만들어야 합니다.
괄호 없이 튜플 사용하기
Python에서 괄호 없이 튜플을 사용할 수 있습니다. 이를 암시적(implicit) 튜플이라고 합니다. 튜플을 만들 때 괄호를 생략하면, Python은 자동으로 요소들을 튜플로 인식합니다. 이런 방식으로 튜플을 생성하는 것을 "tuple packing"이라고도 합니다.
예시:
# 괄호 없이 튜플 생성
my_tuple = 1, "apple", 3.14
print(my_tuple) # Output: (1, 'apple', 3.14)
# 괄호 없이 튜플을 반환하는 함수
def get_name_and_age():
return "Alice", 30
# 함수의 반환값을 괄호 없이 튜플로 받기
name, age = get_name_and_age()
print(name, age) # Output: Alice 30
괄호 없이 튜플을 사용할 때 주의해야 할 점은, 연산자 우선순위와 혼동이 없어야 한다는 것입니다. 예를 들어, 튜플을 더하기 연산과 함께 사용하려면 괄호를 사용하여 명시적으로 표현해야 합니다.
예시:
# 튜플 더하기 연산을 사용할 때는 괄호가 필요
result = (1, 2) + (3, 4)
print(result) # Output: (1, 2, 3, 4)
튜플 변수 값 교환
Python에서는 튜플을 사용하여 두 변수의 값을 쉽게 교환할 수 있습니다. 이 방법은 임시 변수가 필요하지 않으며 구문이 간결합니다.
다음은 튜플을 사용하여 두 변수의 값을 교환하는 예입니다.
# 초기값이 있는 변수들
a = 5
b = 10
# 튜플을 사용하여 값 교환
a, b = b, a
# 교환된 값 출력
print("a:", a) # Output: a: 10
print("b:", b) # Output: b: 5
이 예에서는 튜플 (b, a)가 생성된 다음 해당 값이 변수 a 및 b로 압축 해제됩니다. 결과적으로 임시 변수 없이도 두 변수의 값이 교환됩니다.
튜플로 함수 값 반환
Python에서는 튜플을 사용하여 함수에서 여러 값을 반환할 수 있습니다. 이를 달성하려면 함수에서 원하는 값을 포함하는 튜플을 반환하기만 하면 됩니다. 함수를 호출할 때 반환된 튜플을 별도의 변수로 압축 해제할 수 있습니다.
다음은 튜플을 사용하여 여러 값을 반환하는 함수의 예입니다.
def get_name_and_age():
# 이름과 나이 값을 정의합니다
name = "Alice"
age = 30
# 이름과 나이를 튜플 형태로 반환합니다
return name, age
# 함수를 호출하고 반환된 튜플을 언팩합니다
person_name, person_age = get_name_and_age()
# 언팩된 값을 출력합니다
print("Name:", person_name) # Output: Name: Alice
print("Age:", person_age) # Output: Age: 30
이 예에서 get_name_and_age 함수는 이름과 나이를 포함하는 튜플을 반환합니다. 함수를 호출할 때 반환된 튜플은 person_name 및 person_age 변수로 풀립니다.
리스트와 딕셔너리에서 튜플 사용하기
튜플을 목록 내의 요소로 사용하고 사전의 키 또는 값으로 사용할 수 있습니다. 다음은 목록과 사전 모두에서 튜플을 사용하는 방법을 보여주는 예입니다.
1. 리스트에서 튜플 사용
# 튜플을 포함하는 리스트 생성
persons = [("Alice", 30), ("Bob", 25), ("Charlie", 22)]
# 리스트 내의 튜플 요소들에 접근하고 출력
for name, age in persons:
print(f"Name: {name}, Age: {age}")
이 예에서는 이름과 나이가 포함된 튜플을 포함하는 'persons'라는 목록을 만듭니다. 그런 다음 목록을 반복하고 정보를 인쇄하기 위해 각 튜플을 name 및 age 변수로 압축을 풉니다.
2. 딕셔너리에서 튜플 사용
# 튜플을 키로 사용하여 딕셔너리 생성
grades = {
("Math", "Alice"): 90,
("Math", "Bob"): 85,
("English", "Alice"): 95,
("English", "Bob"): 88,
}
# 튜플 키를 사용하여 딕션너리에서 요소에 액세스하고 출력
for (subject, name), grade in grades.items():
print(f"Subject: {subject}, Name: {name}, Grade: {grade}")
이 예에서는 튜플을 키로 사용하여 grades라는 딕셔너리을 만듭니다. 키는 과목과 학생 이름으로 구성되며 값은 해당 과목에 대한 학생의 성적을 나타냅니다. 그런 다음 items() 메서드를 사용하여 사전을 반복하고 각 키-값 쌍을 변수 subject, name 및 grade로 풀어 정보를 인쇄합니다.
객체별 특징
가변 객체(mutable)
- 생성 후 변경 가능: 초기화 후 상태나 내용을 수정할 수 있습니다.
- Python의 예: 목록, 사전 및 집합은 변경 가능한 개체의 예입니다.
- 내부 수정: 변경 가능한 개체에 대한 작업은 새 개체를 만들지 않고 상태를 직접 변경할 수 있습니다.
- 잠재적으로 메모리 효율성이 낮음: 변경 가능한 객체는 변경될 수 있으므로 크기가 커지거나 줄어들 때 더 많은 메모리를 사용할 수 있습니다.
- 사전 키로 사용하기에 적합하지 않음: 변경 가능한 객체는 상태가 변경되어 해싱 프로세스에 영향을 줄 수 있기 때문에 사전에서 키로 사용할 수 없습니다.
불변 객체(immutable)
- 생성 후 변경할 수 없음: 초기화 후에도 상태 또는 내용이 일정하게 유지됩니다.
- Python의 예: 문자열, 튜플, 정수 및 부동 소수점은 불변 객체의 예입니다.
- 수정을 위한 새 객체: 불변 객체를 변경하는 것처럼 보이는 작업을 수행할 때 대신 새 객체가 생성됩니다.
- 메모리 효율성 향상: 변경 불가능한 개체는 크기와 내용이 수명 기간 동안 일정하게 유지되므로 메모리를 덜 사용합니다.
- 사전 키로 사용하기에 적합: 불변 객체는 상태가 일정하게 유지되어 일관된 해싱 프로세스를 보장하기 때문에 사전의 키로 사용할 수 있습니다.
'Python > Python 기본' 카테고리의 다른 글
[Python] 텍스트 파일 처리 (0) | 2023.04.30 |
---|---|
[Python] 람다(Lambda)란? (0) | 2023.04.30 |
[Python] 재귀 함수란? (2) (2) | 2023.04.30 |
[Python] 재귀함수란? (0) | 2023.04.29 |
[Python] 리턴 값(return value)이란? (0) | 2023.04.29 |