튜플(tuple)은 리스트(list)와 비슷하지만, 한 번 정의되면 수정할 수 없다라는 특징을 지니고 있습니다.
리스트(list)에서는 수정이 됐었지만, 튜플(tuple)에서는 수정하려고 하면 에러가 발생합니다.
다음은 공식 문서에서 설명하는 tuple입니다.
Tuples are immutable sequences, typically used to store collections of heterogeneous data (such as the 2-tuples produced by the enumerate() built-in). Tuples are also used for cases where an immutable sequence of homogeneous data is needed (such as allowing storage in a set or dict instance).
지금부터 tuple에 대해서 알아보도록 하겠습니다.
튜플(tuple)은 앞서 말했던 것처럼 수정이 불가능한 sequence입니다.
튜플은 기본적으로 소괄호"( )"로 감싸서 표현합니다.
list( )와 마찬가지로 tuple( )도 존재합니다.
(종종 사진으로 나왔는데 ('1', '2', '3')의 원소는 숫자 형태의 문자입니다. 절대 숫자가 아닙니다.)
이렇게도 표현이 가능합니다. 다만 실제로 다음과 같이 표현할 경우 헷갈릴 수 있어 잘 쓰진 않습니다.
주의하셔야 할 점은 원소가 한 개 뿐인 튜플(tuple)은 꼭 원소 뒤에 " , "를 붙여주셔야 합니다. 이는 소괄호를 이용해서 튜플을 표현할 때도 마찬가지입니다.
다만 이렇게 하시면 안됩니다.
함수의 ( ) 안에서 " , "는 인자를 구분하는 데 쓰이기 때문입니다. 쉽게 말해서 1, 2, 3을 튜플(tuple)로 인식하지 않고 1과 2와 3 각각으로 본다는 뜻입니다. 두 함수 모두 한 개만 있으면 되는데 세 개나 들어가서 에러가 생겼습니다.
튜플(tuple)도 연산이 가능합니다.
a와 b의 원소를 모두 포함하는 새로운 튜플(tuple)을 만들어냅니다.
+len( ) 내장함수(built-in function)으로 튜플(tuple)의 길이 구하기
리스트(list)와 마찬가지입니다.
원소의 개수로도 볼 수 있습니다.
튜플(tuple)에서 얕은 복사와 깊은 복사를 따질 수 있을까요?
개념은 있겠지만 튜플(tuple)에서는 의미가 없을 겁니다. 얕은 복사가 문제인 이유는 어떤 리스트(list)의 원소 하나를 바꿨더니 원치 않는 리스트(list)의 원소까지 바뀌어버리는 경우 때문이었는데, 애초에 튜플(tuple)은 수정이 불가능하기 때문입니다.
https://stackoverflow.com/questions/1708510/list-vs-tuple-when-to-use-each
+개인적으로 가장 큰 이유는 우선 수정이 불가능하다는 점인 것 같습니다.
다시 말하자면 "정보 보호"가 가능하다는 점입니다.
예를 들어 학번 정보를 기억한다고 해봅시다. 사실은 리스트(list)에 저장해도 되지만, 튜플(tuple)에 저장하면 더 안전하게 저장할 수 있습니다. 학번은 불변성을 지니기 때문입니다.