상세 컨텐츠

본문 제목

튜플에 대한 기초 지식

Python

by techbard 2015. 7. 7. 17:34

본문

반응형
  • 특성
    1. 내용 수정이 안되는 리스트다.
    2. 리스트 보다 약간 빠르게 동작하고 별도의 표기법이 없으면 튜플로 생성된다.
    3. 따라서 유용하고 자주 사용된다.
  • 예제
    • 컨테이너

# 튜플 객체 생성

t = ('white', 'black', 'yellow')

print(t)

print(type(t))


결과)

('white', 'black', 'yellow')

<class 'tuple'>


# 요소가 1개라면 소괄호를 사용해도 의미가 없다.

t = ('white')

print(t)

print(type(t))


결과)

white

<class 'str'>


# 요소가 2개 이상이라면 소괄호가 없어도 기본적으로 튜플이 생성된다.

t = 'white', 'black'

print(t)

print(type(t))


결과)

('white', 'black')

<class 'tuple'>


# comma 연산자로 생성한다.

t = 1, 2, 3, 4


print(t)


결과)

(1, 2, 3, 4)


# 튜플은 수정이 불가능하다.

t = 'first', 'second'

t[0] = 'third'


결과)

TypeError: 'tuple' object does not support item assignment


# 리스트를 튜플로 변환하기

l = ['white', 'black']

t = tuple(l)

print(t)


결과)

('white', 'black')

  • 언패킹 (Unpacking)

# 튜플의 요소를 꺼내는 정형화된 방식을 언패킹이라 한다. 리스트에도 사용 가능하나 튜플에서 자주 쓰이며 컨테이너의 크기를 사전에 알고 있어야 한다.

l = ['white', 'black']

first, second = l

print(first)

print(second)


결과)

white

black


# 요소 개수가 일치하지 않으면 에러가 발생한다.

l = ['white', 'black']

first, second, third = l

print(first)

print(second)


결과)

ValueError: need more than 2 values to unpack

  • 튜플의 슬라이싱

# 튜플의 슬라이싱 결과는 튜플이다.

t = 'white', 'black'

print(t[:])


결과)

('white', 'black')


# 슬라이싱에 '[', ']'를 사용한다고 해서 리스트인 것은 아니다.

t = 'white', 'black'

print(t[0])

print(type(t[0]))


결과)

white

<class 'str'>

  • 내장함수 enumerate()를 이용한 리스트 순회

# 인덱스로 리스트를 순회할 때 내장 함수 enumerate()를 사용할 수 있다. 이 함수는 시퀀스 타입을 하나 받아 두 개의 튜플로 되돌려준다. 각 튜플 요소에는 인덱스와 원래 리스트 요소가 담겨있다. 이 튜플을 for 문의 두 개 변수로 언패킹이 가능하다.

l = ['alpha', 'beta', 'gamma']

for i, letter in enumerate(l):

print(i, letter)


결과)

0 alpha

1 beta

2 gamma

  • 튜플 할당 변수 교환하기

# 리스트에서의 변수 교환

x = [1, 2]

y = [3, 4]


x, y = y, x


print(x)

print(y)


결과)

x = [1, 2]

y = [3, 4]


# 튜플에서의 변수 교환

a = (1, 2)

b = (3, 4)

a, b = b, a


print('a:', a)

print('b:', b)


결과)

a: (3, 4)

b: (1, 2)

  • 함수에 언팩킹 사용하기

enumerate() 함수는 인덱스와 요소의 튜플을 리턴한다. 리턴된 튜플이 함수에 적용되면서 개수에 맞게 언팩킹된다.

t = tuple('abcde')


for value in enumerate(t):

    print('{}: {}'.format(*value))


결과)

0: a

1: b

2: c

3: d

4: e


반응형

관련글 더보기

댓글 영역