SW/Python

Python : Tuples : 튜플 : 사용 방법, 예제, 명령어

얇은생각 2023. 1. 10. 07:30
반응형

Python에는 조직적이고 효율적인 방식으로 데이터 모음을 저장할 수 있는 몇 가지 순차적 데이터 유형이 있습니다. 기본 시퀀스 유형은 문자열, 목록, 튜플 및 범위 개체입니다.

Python 튜플의 기본 사항에 대해 설명합니다. 튜플 생성, 요소 액세스, 튜플 언팩 등의 방법을 보여드리겠습니다.

튜플은 목록과 유사하며, 주된 차이점은 목록은 변경할 수 있지만 튜플은 변경할 수 없다는 것입니다. 이것은 생성 후 튜플을 변경할 수 없음을 의미합니다.

튜플은 이기종 및 동종 데이터를 모두 저장할 수 있지만 일반적으로 이기종 요소의 컬렉션을 저장하는 데 사용됩니다.

 

 

Python : Tuples : 튜플 : 사용 방법, 예제, 명령어

 

 

튜플 생성

튜플은 쉼표로 구분된 둥근 괄호() 쌍 안에 항목을 배치하여 만들어집니다. 다양한 유형의 항목이 포함될 수 있습니다. 다음은 예입니다.

colors = ('orange', 'white', 'green')

 

 

튜플에는 데이터 유형이 혼합된 항목이 포함될 수 있습니다. 목록, 튜플 또는 사전 항목이 하나 이상 있는 중첩 튜플을 선언할 수도 있습니다.

my_tuple = (1, False, ["red", "blue"], ("foo", "bar"))

 

 

괄호 사이에 요소가 없는 둥근 괄호는 빈 튜플을 나타냅니다.

my_tuple = ()

 

 

하나의 요소로만 튜플을 만들려면 요소 뒤에 쉼표를 추가해야 합니다.

my_tuple = (1)
type(my_tuple)
my_tuple = (1,)
type(my_tuple)

# <class 'int'>
# <class 'tuple'>

 

 

튜플() 생성자를 사용하여 튜플을 생성할 수도 있습니다.

colors_list = ['orange', 'white', 'green']
colors_typle = tuple(colors_list)
print(type(colors_typle))

# <class 'tuple'>

 

 

튜플을 구성하는 또 다른 방법은 쉼표로 구분된 일련의 개체에서 튜플을 만들 수 있는 튜플 패킹 기능을 사용하는 것입니다.

directions = "North", "South", "East", "West"
print(type(directions))

# <class 'tuple'>

 

 

 

튜플 요소에 액세스

튜플 항목은 인덱스로 참조할 수 있습니다. 인덱스는 정수이며 0부터 n-1까지 시작합니다. 여기서 n은 항목 수입니다.

my_tuple = ["a", "b", "c", "d"]
             0    1    2    3

 

 

Python 인덱스는 대괄호로 지정됩니다.

my_tuple[index]

 

 

예를 들어 튜플의 세 번째 요소에 액세스하려면 tuple_name[2]을(를) 사용합니다.

directions = ("North", "South", "East", "West")
directions[2]

# 'East'

 

 

존재하지 않는 인덱스를 참조하면 IndexError 예외가 발생합니다.

# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
# IndexError: tuple index out of range

 

 

중첩 튜플의 항목에 액세스하려면 여러 인덱스를 사용합니다.

my_tuple = (1, False, ["red", "blue"], ("foo", "bar"))
my_tuple[3][1]

# 'bar'

 

 

음의 인덱스를 사용하여 튜플 요소에 액세스할 수도 있습니다. 마지막 항목은 -1, 두 번째 마지막 항목은 -2라고 합니다.

my_tuple = ("a", "b", "c", "d")
            -4   -3   -2   -1

directions = ("North", "South", "East", "West")
directions[-2]

# 'East'

 

 

 

튜플을 자르기 

Python에서는 다음 양식을 사용하여 튜플 및 기타 순차적 데이터 유형을 슬라이스할 수 있습니다.

sequence[start:stop:step]

 

 

start는 추출을 시작하는 인덱스입니다. 음수 인덱스가 사용되는 경우 튜플 끝으로부터의 간격띄우기를 나타냅니다. 이 인수를 생략하면 인덱스 0부터 슬라이스가 시작됩니다.

stop은 추출을 종료하기 전에 인덱스로, 결과에는 "stop" 요소가 포함되지 않습니다. 음수 인덱스가 사용되는 경우 튜플 끝으로부터의 간격띄우기를 나타냅니다. 이 인수가 생략되거나 튜플 길이보다 크면 슬라이스가 튜플의 끝으로 이동합니다.

step은 선택적 인수이며 슬라이싱 단계를 지정합니다. 지정하지 않으면 기본값은 1입니다. 음수 값이 사용되는 경우 슬라이스는 요소를 역순으로 가져옵니다.

튜플을 슬라이스한 결과는 추출된 요소를 포함하는 새로운 튜플입니다.

다음 양식은 Python에서 합법적입니다.

T[:] # copy whole tuple
T[start:] # slice the tuple starting from the element with index "start" to the end of the tuple.
T[:stop] # slice the tuple starting from the begging up to but not including the element with index "stop".
T[start:stop] #  slice the tuple starting from the element with index "start" up to but not including the element with index "stop".
T[::step] # slice the tuple with a stride of "step"

 

 

아래는 인덱스 1의 요소에서 시작하여 인덱스 4의 요소를 포함하지 않고 튜플을 슬라이스하는 방법의 예입니다.

vegetables = ('Potatoes', 'Garlic', 'Celery', 'Carrots', 'Broccoli')
vegetables[1:4]

# ('Garlic', 'Celery', 'Carrots')

 

 

 

튜플을 풀기

변수에 시퀀스 개체를 할당할 수 있는 Python 기능의 시퀀스 언팩입니다. 다음은 예입니다.

colors = ('orange', 'white', 'green')
a, b, c = colors
print(a)
print(b)
print(c)

# orange
# white
# green

 

 

위치에 따른 튜플 요소의 값은 왼쪽 변수에 할당됩니다.

튜플을 풀 때 왼쪽 튜플에 있는 변수의 수는 튜플 요소의 수와 같아야 합니다. 그렇지 않으면 ValueError 예외가 발생합니다.

colors = ('orange', 'white', 'green')
a, b = colors

# ValueError: too many values to unpack (expected 2)

 

 

압축 해제는 메서드 또는 함수가 일련의 개체를 반환할 때 유용합니다.

def square_area_circumference(side_lenght):
  return side_lenght * side_lenght, side_lenght * 4

area, circumference = square_area_circumference(5)

print(area)
print(circumference)

# 25
# 20

 

 

 

튜플을 바꾸기

튜플은 불변 데이터 구조이기 때문에 직접 업데이트할 수 없습니다. 요소를 튜플 단위로 추가, 변경, 제거할 수 없습니다.

튜플 요소를 변경하려고 하면 TypeError 예외가 표시됩니다.

colors = ("orange", "white", "green")
colors[1] = "blue"

# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
# TypeError: 'tuple' object does not support item assignment

 

 

가변 튜플 항목의 요소를 변경할 수 있습니다. 예를 들어 튜플에 목록이 요소 중 하나로 있는 경우 목록 요소를 업데이트할 수 있습니다.

my_tuple = (1, 2, [5, 6, 7])
my_tuple[2][1] = 4
print(my_tuple)

# (1, 2, [5, 4, 7])

 

 

 

튜플 길이

기본 제공 len() 함수는 지정된 개체의 총 항목 수를 반환합니다.

튜플 길이를 찾으려면 이를 len() 함수에 인수로 전달합니다.

len(L)

 

 

다음은 예입니다.

colors = ("orange", "white", "green")
lenght = len(colors)
print(lenght)

# 3

 

 

 

튜플을 통해 반복

튜플의 모든 요소를 반복하려면 for 루프를 사용할 수 있습니다.

directions = ("North", "South", "East", "West")
for direction in directions:
  print(direction)

# North
# South
# East
# West

 

 

색인이 필요한 경우 여러 가지 방법을 사용할 수 있습니다. 가장 일반적인 방법은 범위() 및 len() 함수를 결합하거나 기본 제공 열거() 함수를 사용하는 것입니다.

아래 예에서는 색인과 튜플의 각 항목 값을 검색하는 방법을 보여 줍니다.

directions = ("North", "South", "East", "West")
for i in range(len(directions)):
  print("Index {} : Value {}".format(i, directions[i]))

# Index 0 : Value North
# Index 1 : Value South
# Index 2 : Value East
# Index 3 : Value West

 

 

범위(len(...) 패턴을 사용하는 대신 enumerate() 함수를 사용하여 튜플을 보다 파이토닉하게 루프할 수 있습니다.

directions = ("North", "South", "East", "West")
for index, value in enumerate(directions): 
  print("Index {} : Value {}".format(index, value))

# Index 0 : Value North
# Index 1 : Value South
# Index 2 : Value East
# Index 3 : Value West

 

 

 

요소가 있는지 확인

요소가 튜플에 있는지 확인하려면 연산자에 in과 not을 사용할 수 있습니다.

colors = ("orange", "white", "green")
print("orange" in colors)

# True

 

 

다음은 if 문을 사용하는 다른 예입니다.

colors = ("orange", "white", "green")
if "blue" not in colors:
  print("no")
else:
  print("yes")

# no

 

 

 

튜플 메서드

튜플 개체는 다음 방법을 사용할 수 있습니다. 

count(x) - 튜플에 'x'가 나타나는 횟수를 반환합니다.

index(x) - 값이 'x'인 요소의 첫 번째 발생 위치를 반환합니다.

 

다음은 메소드를 사용하는 방법을 보여주는 간단한 예입니다.

my_tuple = ("a", "s", "s", "q", "a", "n")
print(my_tuple.count('a'))
print(my_tuple.index('a'))

# 2
# 0

 

 

파이썬에서 튜플은 한번 생성되면 변경할 수 없는 객체의 불변 시퀀스입니다.

반응형