파이썬 프로그래밍 시작 (9) 자료구조(Data Structure) : 튜플

파이썬 프로그래밍 시작 (9) 자료구조(Data Structure) : 튜플

많은 컴퓨터 프로그램은 알고리즘과 자료구조로 구성됩니다. 자료구조에 대해 알면 실제로 유용할게 쓸 수 있는 파이썬 프로그래밍을 할 수 있습니다. 리스트, 튜플, 딕셔너리라는 자료구조 중 두 번째로 튜플에 대해 알아봅니다. 이번 포스팅에서는 튜플을 만드는 방법, 리스트와의 차이점, 그리고 튜플에서 사용하는 함수까지 배워보겠습니다.



글의 순서

파이썬 프로그래밍 시작하기 : replit 로그인
파이썬 자료구조 튜플(Tuple)
코딩용어 가변(mutable), 불편(immutable)
튜플에서 사용빈도가 높은 대표 함수 4개


파이썬 프로그래밍 시작하기 : replit 로그인

리플(http://repl.it)에 로그인합니다.
로그인하고 난 후 보이는 화면의 중앙 상단에 ‘+new repl’ 버튼이 있습니다. 이 버튼을 클릭하면, ‘New repl’ 창이 뜨는데 여기서 프로그래밍 언어로 파이썬(Python)을 선택합니다. 파이썬 선택 후 ‘Creat Repl’ 을 클릭합니다.

이 과정을 거치면 지난 포스팅에서 보셨던 코딩 환경이 나타나는데, 역시나 3개의 창이 보입니다. 창의 배치는 달라질 수 있습니다만, 그 3개의 창은 각각 코드를 담고 있는 파일이름이 있는 창, 코드를 편집할 수 있는 창, 코드 실행결과를 확인할 수 있는 창(=터미널)으로 구성되어 있습니다.



파이썬 자료구조 튜플(Tuple)

지난 포스팅에서 파이썬 프로그래밍을 위한 자료구조 중 리스트에 대해 배워보았습니다. 리스트는 인덱스를 기반으로 값을 저장하는 자료구조이며 리스트를 구성하는 요소를 엘리먼트라고 합니다. 즉, 리스트는 엘리먼트 여러 개를 묶어 놓은 것입니다.

튜플(Tuple)도 리스트와 비슷합니다. 엘리먼트 여러 개를 묶어 놓은 것인데, 리스트와 다른점은 엘리먼트의 값을 바꿀 수 없다는 것입니다. 값을 추가로 할당(assignment) 할 수 없어 값이 바뀌지 않습니다.

튜플을 만드는 법은 튜플01 코드와 같습니다. 튜플을 만드는 함수는 tuple()이거나 ()입니다. 튜플이 어떤 모습일지를 확인하는 데는 역시나 print라는 명령어가 제일 좋은 방법입니다. 튜플01 코드의 출력결과는 x, y 모두 ()입니다. 리스트01 코드와 비교해 보시기 바랍니다. 참고로 리스트01 코드의 출력결과는 x, y 모두 []입니다.

실습코드 : 튜플01

x = tuple()
y = ()

print(x)
print(y)

실습코드 : 리스트01

x = list()
y = []

print(x)
print(y)

튜플의 엘리먼트는 숫자가 될 수도, 문자가 될 수도 있습니다. 숫자와 문자를 혼합할 수도 있습니다.

실습코드 : 튜플02

x = (1,2,3,4)
y = ("hello", "world")
z = ("hello", 1,2,3)

print(x)
print(y)
print(x + y)
print(z)

튜플이 리스트와 다른 점은 엘리먼트의 값을 바꿀 수 없다고 말씀드렸는데요. 튜플03 코드를 실행해보면 에러가 납니다, 튜플03 코드에서 x[0] 은 ‘x 라는 튜플의 첫 번째 자리에 10이라는 값을 담아라(할당해라)’ 라는 의미입니다. 튜플에서는 엘리먼트의 값을 바꿀 수 없으므로, 에러가 발생하는 것입니다.

실습코드 : 튜플03

x = (2,3,1,4)

print[0] = 10


코딩용어 가변(mutable), 불편(immutable)

튜플과 리스트를 비교했을 때 가장 큰 차이점은 엘리먼트의 값을 바꿀 수 있고, 없고에 있습니다. 리스트의 경우 엘리먼트 값을 바꿀 수 있는데, 튜플은 값을 바꿀 수 없다는 것입니다. 이처럼 값을 바꿀 수 있으면 가변(mutable, 뮤터블)이라고 하고, 값을 바꿀 수 없으면 불변(immutable, 이뮤터블)이라고 합니다.


튜플에서 사용빈도가 높은 대표 함수 4개

리스트에서 쓸 수 있는 함수를 튜플에서도 쓸 수 있습니다. 참고로 지난 포스팅에서 봤던 리스트용 대표 함수입니다. 튜플의 엘리먼트는 불변이므로, sorted라는 함수가 제대로 작동하지 않습니다. 에러가 발생하지는 않는데, 튜플이 리스트로 바뀝니다. 리스트에서 봤던 그 함수 5개 중에 sorted만 빼면 모두 사용할 수 있습니다. 이 때문에 아래 표에서 sorted에 취소선 표시를 하였습니다.

리스트 함수 이름 함수의 의미
len 리스트의 크기
sorted 순서대로 정렬
sum 리스트 내에 있는 엘리먼트가 모두 숫자일 경우, 엘리먼트를 모두 더한 결과
index 엘리먼트의 위치
in in y 라고 하면, y라는 리스트 안에 어떤 엘리먼트가 있는지를 묻는 것
리스트 함수

실습코드 : 튜플04

x = (2,3,1,4)
y = ("hello", "world")
print(x)
print(y)

num_elements = len(x)
print("튜플 x의 엘리먼트 개수 :", num_elements)
print("튜플 y의 엘리먼트 개수 :", len(y))

sum_elements = sum(x)
print("튜플 x 각 엘리먼트의 합 :", sum_elements)

print("hello" in y)
print(x.index(1))

튜플04 코드를 실행시키면, 먼저 튜플 x, y를 출력해줍니다. 그 다음부터는 튜플 함수가 사용되는 모습입니다.
len(x)는 튜플 x의 엘리먼트 개수를 의미하는데, 이 값을 num_elements라는 변수에 담아 두었다가 그 다음 줄에서 보여줍니다. “튜플 x의 엘리먼트 개수 :” 다음에 출력된 4라는 값이 num_elements의 값입니다. 마찬가지로 2 라는 len(y) 값을 확인할 수 있습니다.
튜플의 모든 엘리먼트가 숫자인 경우, sum이라는 함수로 모든 엘리먼트의 합을 구할 수 있습니다. 튜플 x에 들어있는 4개의 엘리먼트를 모두 합하면 10이니까 sum_elements에는 10이 담겨 있습니다.
“hello” in y는 튜플 y의 엘리먼트 중에 “hello”가 있는지를 묻는 것입니다. 튜플 y에는 “hello”라는 엘리먼트가 있으므로, True가 출력됩니다.
마지막으로 x.index(1)는 튜플 x의 엘리먼트 중에 1이 어느 위치에 있는지를 묻는 것입니다. 1은 세 번째 자리에 있으므로 세 번째 자리를 의미하는 2가 출력됩니다. 만약 여기서 x.index(10)이라고 물어봤다면 에러를 띄웁니다.

이 코드를 기반으로 변수나 명령들을 조금씩 바꿔가며 튜플에 익숙해지시길 바랍니다.


마치며 …

이번 포스팅에서는 파이썬 프로그래밍을 한 차원 높일 수 있는 자료구조 중 튜플을 만드는 방법, 리스트와의 차이점, 리스트에서 배웠던 함수가 튜플에도 사용된다는 것까지 배웠습니다. 튜플이 리스트와 다른 점은 엘리먼트가 불변(immutable) 이라는 것입니다. 즉 엘리먼트 값을 바꿀 수가 없습니다.

len, sum, index, in과 같은 사용빈도가 높은 튜플 전용 함수를 기억해 주시기 바랍니다. 많은 컴퓨터 프로그램은 알고리즘과 자료구조로 구성되므로, 자료구조에 대해 알면 실제로 유용할게 쓸 수 있는 파이썬 프로그래밍을 할 수 있습니다. 리스트, 튜플, 딕셔너리라는 자료구조 중 리스트, 튜플까지 배워보았고, 딕셔너리가 남아있습니다. 다음 포스팅에서 뵙겠습니다.

 

 

함께 참고하면 더 좋은 글 :
1. 파이썬 프로그래밍 시작하기 (1) 온라인 프로그래밍 환경 replit
2. 파이썬 프로그래밍 시작 (2) 변수, 타입, 문자열 실습
3. 파이썬 프로그래밍 시작 (3) 파이썬 함수 실습
4. 파이썬 프로그래밍 시작 (4) 조건문
5. 파이썬 프로그래밍 시작 (5) 연습문제 : 함수 만들기
6. 파이썬 프로그래밍 시작 (6) 반복문
7. 파이썬 프로그래밍 시작 (7) 반복문과 무한루프
8. 파이썬 프로그래밍 시작 (8) 자료구조(Data Structure) : 리스트
9. 파이썬 데이터 분석! 데이터 분석을 위한 코딩언어 파이썬
10. 애플 실리콘 M1 시리즈 비교 : M1 Pro, M1 Max, M1 Ultra

 


참고자료

테크보이 워니(2020), 코딩 1시간만에 배우기 – 파이썬 (ft. 실리콘밸리 엔지니어)

 

Leave a Comment