[파이썬] 튜플(tuple), 순서가 있고, 수정이 불가능한 자료

반응형
    반응형

     

    1. 튜플이란?

    파이썬에서 튜플(Tuple)은 다양한 데이터 타입의 요소들을 순서대로 저장하는 데 사용되는 데이터 구조 중 하나입니다. 튜플은 리스트와 유사하지만, 가장 큰 차이점은 튜플이 불변(immutable)이라는 점입니다. 즉, 튜플에 저장된 데이터는 생성 후에 변경할 수 없습니다.

     

    2. 튜플의 특징

    (1) 불변성(Immutability): 한 번 생성된 튜플의 요소는 변경할 수 없습니다.
    (2) 순서가 있음(Ordered): 튜플의 요소는 순서를 가지며, 이 순서는 변경되지 않습니다.
    (3) 인덱싱과 슬라이싱(Indexing and Slicing): 리스트와 마찬가지로 튜플도 인덱싱과 슬라이싱이 가능합니다.
    (4) 다양한 데이터 타입(Diverse Data Types): 튜플 내의 요소들은 서로 다른 데이터 타입을 가질 수 있습니다.

     

    3. 튜플의 표현

    튜플은 소괄호 "(", ")"에 의해 표현됩니다. 소괄호를 생략하는 것도 가능하지만 사용하는 것이 바람직합니다. 

     

    # 튜플 생성
    my_tuple = (1, 2, 3, 'Hello', 5.0)
    
    # 튜플의 데이터 접근
    print(my_tuple[1])  # 출력: 2
    
    # 튜플 슬라이싱
    print(my_tuple[1:4])  # 출력: (2, 3, 'Hello')
    
    # 함수에서 튜플 반환
    def min_max(numbers):
        return min(numbers), max(numbers)
    
    result = min_max([1, 2, 3, 4, 5])
    print(result)  # 출력: (1, 5)

     

    4. 리스트와 튜플의 변환 

    튜플과 리스트는 파이썬에서 서로 변환할 수 있습니다. 이 변환은 매우 간단하며, 파이썬의 내장 함수를 사용하여 쉽게 수행할 수 있습니다.

    (1) 리스트를 튜플로 변환하기:
    리스트를 tuple() 함수에 전달하여 튜플로 변환할 수 있습니다.
    예: my_list = [1, 2, 3]를 my_tuple = tuple(my_list)로 변환.

     

    (2) 튜플을 리스트로 변환하기:
    튜플을 list() 함수에 전달하여 리스트로 변환할 수 있습니다.
    예: my_tuple = (1, 2, 3)을 my_list = list(my_tuple)로 변환.

     

    5. 데이터 언패킹 

    튜플을 구성하는 데이터도 때로는 인덱스를 이용하여 정의할 수 있습니다. 

     

    회원1 = (정우성, (1974.04.02), (2024.01.20))

     

    이러한 튜플에서 인덱스를 이용하면 다음과 같이 표현이 가능합니다.

     

    회원이름 = 회원1[0]

    생년월일 = 회원1[1] 

    가입일 = 회원1[2] 

     

    하지만 이렇게 한줄한줄 사용하지 않고 한번에 정의하는 것도 가능하다. 이를 언패킹이라고 합니다. 

     

    회원이름, 생년월일, 가입일 = 회원1

     

    언패킹을 이용하면 인덱싱을 하는 것보다 코딩의 줄수를 줄일 수 있고, 가독성도 높일 수 있습니다. 

     

    6. 별 표현식(*)

    별 표현식(Star Expression)은 파이썬에서 리스트, 튜플, 문자열 등의 반복 가능한(iterable) 데이터 구조의 요소들을 언패킹(unpacking)할 때 사용됩니다. 별 표현식은 주로 '별표(*)' 기호를 사용하여 정의됩니다. 이 표현식은 파이썬 3에서 도입되어, 변수에 반복 가능한 데이터의 여러 값을 한 번에 할당하는 데 유용하게 사용됩니다.

    별 표현식의 주요 사용 사례는 다음과 같습니다:

    (1) 여러 요소 언패킹(Unpacking Multiple Elements):

    별 표현식을 사용하여 리스트나 튜플의 일부만 아닌 여러 요소를 동시에 다른 변수에 할당할 수 있습니다.
    예: first, *middle, last = [1, 2, 3, 4, 5] 에서 middle은 [2, 3, 4]를 갖게 됩니다.
    함수 인자로 사용(Using in Function Arguments):

    (2) 함수를 호출할 때 별 표현식을 사용하여 리스트나 튜플의 요소들을 개별 인자로 전달할 수 있습니다.
    예: def sum(a, b, c): 함수에 args = [1, 2, 3]을 sum(*args)로 전달할 수 있습니다.
    반복 가능한 객체의 길이가 불확실할 때(When Length of Iterable is Uncertain):

    (3) 언패킹할 객체의 길이가 불확실하거나, 단지 몇몇 요소만 필요할 때 유용합니다.
    예: first, *rest = my_list 에서 rest는 첫 번째 요소를 제외한 나머지 모든 요소를 담게 됩니다

     

    # 여러 요소 언패킹 예시
    my_list = [1, 2, 3, 4, 5]
    first, *middle, last = my_list
    print("첫 번째 요소:", first)
    print("중간 요소들:", middle)
    print("마지막 요소:", last)
    
    # 함수 인자로 사용 예시
    def sum_of_three(a, b, c):
        return a + b + c
    
    args = [1, 2, 3]
    print("함수 결과:", sum_of_three(*args))

     

    반응형

    댓글

    Designed by JB FACTORY