Python
데이터형 튜플 Python data type tuple
데이터형 튜플 Python data type tuple
안녕하세요.
이번시간에는 앞에서 학습한 데이터형인 리스트와 흡사하지만 값을 변경할 수 없는 튜플형에 대해 알아볼게요.
리스트형은 대괄호 [] 를 사용해서 선언을 했는데요.
튜플형은 소괄호 ()를 사용합니다.
튜플형 선언 방법
myTuple = (1,2,3,4,5)
그럼 튜플을 출력해 볼게요.
myTuple = (1,2,3,4,5) print(myTuple)
결과는 바로 아래에서 확인할 수 있습니다.
마찬가지로 특정 값을 출력하려면 리스트형과 같이 인덱스를 사용합니다.
튜플형 인덱스 방법
인덱스는 0부터 시작합니다. 3번째 값을 출력하려면 2를 입력하죠.
3번째 값을 출력 해 봅시다.
myTuple = (1,2,3,4,5) print(myTuple[2])
결과는 바로 아래에서 확인할 수 있습니다.
튜플은 리스트와 달리 값을 변경할 수 없다고 했습니다.
그럼 정말로 그런지 한번 볼까요?
값 3을 tuple로 변경해 볼게요.
myTuple = (1,2,3,4,5) myTuple[2] = "tuple"
결과는 바로 아래에서 확인할 수 있습니다.
튜플은 값을 변경할 수 없기 때문에 다음의 에러가 발생합니다.
TypeError: 'tuple' object does not support item assignment
즉 변해야할 값을 선언하려면 리스트, 변하지 않아야할 값을 선언하려면 튜플을 선언합니다.
튜플도 여러가지 값을 대입할 수 있습니다.
int, str, float, list 등이요. ^^
해볼까요?
myTuple = (1,"숫자2",[1,2,3],4.5) print(myTuple)
결과는 바로 아래에서 확인할 수 있습니다.
int,float,str은 대입이 되는데 list가 대입되는건 좀 생소하실 수 있습니다.
하지만 어렵게 생각하지 마세요.
그럼 위의 소스를 기준으로 튜플안에서 생성한 리스트의 특정 값을 출력해볼까요?
리스트형의 2번째 값인 2를 출력해본다면
우선 myTuple안에 list는 3번째에 있습니다. 그러므로 인덱스 2를 사용하고
리스트형에서 2번째 값은 인덱스 1을 사용합니다.
그러면 다음과 같겠죠?
myTuple = (1,"숫자2",[1,2,3],4.5) print(myTuple[2][1])
결과는 바로 아래에서 확인할 수 있습니다.
우리의 의도대로 2가 나오나 봅시다.
우리의 의도대로 2가 잘 나옵니다.
그러면 한개 더 해볼까요? 튜플안에서 선언한 리스트형의 그 안에서 또 리스트형을 선언해봅시다.
myTuple = (1,"숫자2",[1,2,["하이","hi","곤니찌와"]],4.5)
튜플안에 리스트형 안에 리스트형을 선언했어요. 곤니찌와를 출력해볼까요?
곤니찌와는 3번째에 있으므로 인덱스는 0,1,2 즉 2를 사용합니다 그럼 코드는
print(myTuple[2][2][2]) 이죠. 해봅시다.
myTuple = (1,"숫자2",[1,2,["하이","hi","곤니찌와"]],4.5) print(myTuple[2][2][2])
결과는 바로 아래에서 확인할 수 있습니다.
곤니찌와가 잘 나옵니다.
곤니찌와가 아닌 하이를 출력한다면 2가 아닌 0을 사용하죠.
myTuple = (1,"숫자2",[1,2,["하이","hi","곤니찌와"]],4.5) print(myTuple[2][2][0])
결과는 바로 아래에서 확인할 수 있습니다.
갑자기 하나 궁금해지네요.
튜플은 값을 변경할 수 없다.
리스트는 값을 변경할 수 있다.
그럼 튜플안에 선언한 리스트는 값을 변경할 수 있을까? 없을까?
아무리 리스트라도 튜플안에서 선언했으니 값을 변경할 수 없겠죠 라는 생각이 들기도하고
반대로 그래도 리스트니까 변경할 수 있겠지라는 생각이 들기도합니다.
저는 변경할 수 없다고 생각합니다. (절대 결과를 미리 보고 말하는게 아닙니다. 변경할 수 있어도 이 문구를 수정하지 않을게요.)
결과를 봐봅시다.
myTuple = (1,"숫자2",[1,2,["하이","hi","곤니찌와"]],4.5) myTuple[2][2][0] = "안녕" print(myTuple[2][2][0])
결과는 바로 아래에서 확인할 수 있습니다.
오!! 튜플안에서 리스트형의 값을 변경하면 변경이 된다. !!
ㅋㅋㅋ 제가 틀렸네요. ㅜㅜ
저도 이렇게 콘텐츠를 만들면서 하나씩 배웁니다.
그럼 마지막으로 type함수를 사용해 튜플의 데이터형이 어떻게 나오는지 봅시다. 뭐 당연히 튜플로 나오겠지만요. ㅋ
myTuple = (1,2,3) print(type(myTuple))
결과는 바로 아래에서 확인할 수 있습니다.
네 type()을 사용해 데이터형을 확인하니 <class 'tuple'>라고 잘 나오네요.
지금은 데이터가 적어서 인덱스를 사용해 값에 접근하지만 데이터가 많은데 특정 값을 찾아야 한다면 0,1,2,3 세고 있을 수 없습니다.
또는 특정한 값임을 부여하기 위해 myName 또는 주소라는 의미로 address를 인덱스 대신 사용하고 싶기도 하죠.
다음시간에는 인덱스가 아닌 이렇게 문자로 찾는 키를 사용하는 사전에 대해서 알아볼게요. ^^
//=$langList['bottomThankyou'][$langMode]?>