◎ 튜플(tuple)
튜플이란 리스트와 비슷한 자료형이지만 한 가지 중요한 차이가 존재한다. 이미 할당된 값의 수정이나 추가, 삭제가 가능한 리스트와는 달리 튜플은 모두 불가능하다. 튜플은 보통 함수와 사용된다. 그 형태는 아래와 같다.
(데이터, 데이터, ..., 데이터)
1) 튜플의 생성 및 출력
# 튜플 생성
test_tuple = (1, 2, 3, 4, 5)
# 튜플 출력
# 출력 1
print("test_tuple:", test_tuple)
# 출력 2
for i in test_tuple:
print(i)
# 출력 3
for i in range(len(test_tuple)):
print("test_tuple[{}]: {}".format(i, test_tuple[i]))
기본 형태의 튜플을 생성해보고 이를 3가지 방법으로 출력해보았다. 튜플도 리스트와 동일하게 인덱스의 사용이 가능하다.
1-1) 튜플의 수정
# 튜플 생성
test_tuple = (1, 2, 3, 4, 5)
# 튜플 수정
test_tuple[0] = 100
튜플의 첫번째 요소를 100으로 수정하려 했으나 위와 같은 오류가 발생하였다.
1-2) 튜플의 추가
# 튜플 생성
test_tuple = (1, 2, 3, 4, 5)
# 튜플 추가
test_tuple[5] = 6
튜플에 정수 6을 추가하려 했으나 역시 오류가 발생하였다.
1-3) 튜플의 삭제
# 튜플 생성
test_tuple = (1, 2, 3, 4, 5)
# 튜플 삭제
del test_tuple[0]
튜플의 삭제 역시 오류가 발생하고 있다. 따라서 한번 생성된 튜플은 값이 수정되거나 추가되거나 삭제될 수 없다는 것을 확인할 수 있다.
2) 튜플의 사용
[name, age] = ["홍길동", 24]
(a, b) = (10, 20)
print("name:", name)
print("age:", age)
print("a:", a)
print("b:", b)
파이썬에서 튜플과 리스트는 위와 같이 특이한 형태로 값을 할당할 수 있다. 또한 튜플은 굳이 괄호를 사용하지 않아도 튜플로 인식이 가능하다면 괄호를 생략할 수도 있다.
test_tuple = 1, 2, 3, 4, 5
print("type:", type(test_tuple))
for i in test_tuple:
print(i)
test_tuple에 값 1, 2, 3, 4, 5를 괄호가 없는 형태로 할당하였지만 이를 확인해보면 tuple 자료형인 것을 확인할 수 있다. 이처럼 괄호가 생략된 형태의 튜플은 많이 사용되는 편이다. 튜플을 사용하면 변수 값의 교환도 편리하게 가능하다. C언어에서는 변수 값의 교환을 위해선 추가 임시 변수가 필요했지만 파이썬은 그럴 필요가 없다.
a, b = 100, 200
print("Before:", a, b)
print()
a, b = b, a
print("After:", a, b)
a, b = b, a 이 한줄 만으로 편리하게 값의 교환이 가능한 것을 확인할 수 있다. 튜플을 사용하면 함수에서 값을 반환할 때 여러 개를 반환하는 것이 가능해진다.
def fun():
return(1, 2, 3, 4, 5)
test_tuple = fun()
print("type:", type(test_tuple))
print("test_tuple:", test_tuple)
◎ 람다(lambda)
람다는 함수를 보다 간결하고 편리하게 사용할 수 있는 기능이다. 즉, 람다는 '함수를 간단하고 쉽게 선언하는 방법'이다.람다의 형태는 다음과 같다.
lambda 매개변수: 리턴값
람다를 사용하지 않았을 때와 람다를 사용했을 때의 차이를 살펴보자. 먼저 람다를 사용하지 않은 경우이다.
def add(x, y):
return x+y
def sub(x, y):
return x-y
print("add:", add(5, 3))
print("sub:", sub(5, 3))
이제 위 코드에 람다를 적용해보자.
add = lambda x, y: x+y
sub = lambda x, y: x-y
print("add:", add(5, 3))
print("sub:", sub(5, 3))
동일한 내용임에도 불구하고 함수의 선언이 훨씬 간결해짐에 따라 코드가 간결해지게 되었다.