티스토리 뷰

Language/PYTHON

함수 고급(1) 튜플

구일일구 2021. 10. 15. 18:12
반응형

* 튜플 : 함수와 함께 많이 사용되는 리스트와 비슷한 자료형. 리스트와 다른 점은 한번 결정된 요소는 바꿀 수 없음

* 람다 : 매개변수로 함수를 전달하기 위해 함수 구문을 작성하는 것이 번거롭고, 코드 공간 낭비라는 생각이 들 때 함수를 간단하고 쉽게 선언하는 방법

 


튜플

튜플은 리스트와 비슷한 자료형

그러나 리스트와 다른 점은 한번 결정된 요소를 바꿀 수 없다는 것.

다음과 같은 방법으로 생성함.

(데이터, 데이터, 데이터, ...)

 

튜플의 기본 사용 방법

>>> tuple_test = (10, 20, 30)

>>> tuple_test[0]
10
>>> tuple_test[1]
20
>>> tuple_test[2]
30

 

튜플과 리스트는 거의 차이가 없어보임. 하지만 요소를 변경할 때 차이가 있음

0번째 요소에 1을 넣으려고 하면 에러 발생. 튜플은 내부 요소 변경이 불가능함. 

tuple_test[0] = 1

오류오류오류오류

튜플을 유용하게 사용하는 법

리스트와 튜플의 특이한 사용 : 리스트와 튜플을 사용하면 밑과 같은 형태로 변수를 선언하고 할당할 수 있음. 그런데 튜플은 특이한 성질이 있음. 괄호를 생략해도 튜플로 인식할 수 있는 경우는 괄호를 생략해도 됩니다. 

# 리스트와 튜플의 특이한 사용
[a, b] = [10, 20]
(c, d) = (10, 20)

# 출력
print("a:", a)
print("b:", b)
print("c:", c)
print("d:", d)

</>
a: 10
b: 20
c: 10
d: 20

 

1) 괄호가 없는 튜플

편리함으로 인해 자주 사용되는 형태. 

# 괄호가 없는 튜플
tuple_test = 10, 20, 30, 40
print("# 괄호가 없는 튜플의 값과 자료형 출력")
print("tuple_test:", tuple_test)
print("type(tuple_test):", type(tuple_test))
print()

# 괄호가 없는 튜플 활용
a, b, c = 10, 20, 30
print("# 괄호가 없는 튜플을 활용한 할당")
print("a:", a)
print("b:", b)
print("c:", c)

</>
# 괄호가 없는 튜플의 값과 자료형 출력
tuple_test: (10, 20, 30, 40)
type(tuple_test): <class 'tuple'>

# 괄호가 없는 튜플을 활용한 할당
a: 10
b: 20
c: 30

 

괄호가 없는 튜플의 편리함은 다음 코드로 확인할 수 있음. 변수의 값을 교환하는 프로그램

 

2) 변수의 값을 교환하는 튜플

a, b = b, a라는 코드만으로 값이 바뀜. 편리하게 사용할 수 있는 값 교환 방법이므로 알아두기!

a, b = 10, 20

print("# 교환전 값")
print("a:", a)
print("b:", b)
print()

# 값을 교환함
a, b = b, a

print("# 교환 후 값")
print("a:", a)
print("b:", b)
print()

</>
# 교환전 값
a: 10
b: 20

# 교환 후 값
a: 20
b: 10

 

3) 튜플과 함수

튜플은 함수의 리턴에 많이 사용함. 함수의 리턴에 튜플을 사용하면 여러 개의 값을 리턴하고 할당할 수 있기 때문. 

튜플을 사용해 할당할 수 있다는 것을 깨달으면 아래 코드를 쉽게 이해할 수 있음.

# 함수 선언
def test():
    return (10, 20)

# 여러 개의 값을 리턴 받음
a, b = test()

# 출력
print("a:", a)
print("b:", b)

</>
a: 10
b: 20

 

튜플도 리스트처럼 +와 * 연산자 등을 활용할 수 있음. 하지만 그런것들은 리스트로 작성하는 것과 큰 차이가 없어서 튜플을 사용하는 경우는 거의 없음. 괄호 없이 여러 값을 할당하는 것은 튜플만 할 수 있는 일! 

반응형
댓글