튜플에 대해서 공부하던 중 파이썬은 쉼표를 튜플 생성자로 사용하여 소괄호를 생략해도 된다는 내용을 보았습니다.
그럼 과연 map함수로 받아오는 인자는 튜플 형식인가??라는 궁금증도 생기더군요
또, 튜플에서 변경 불가능한 경우가 어떤 것인지 알아봅시다.
또 필요 이상의 실험이 있을 예정이니 원하시는 내용은 아래의 결론파트로 넘어가서 필요한 내용만 스윽 가져가시길 바라겠습니다.
오늘도 간단한 정의부터 시작할게요
a = (1,)
b= (1,2)
q,w = (10,20)
print(type(q)) # int
q = 20
print(q) # 20
tuple_test = (10,20)
x= tuple_test[0]
print(type(x))
x=20
print(x)
a = '10 20'
x,y= map(int, a.split())
print(type(x)) # int
x= 20
print(x) # 20
변수에 값을 할당할 경우, 기존의 변수가 입력되어있기 때문에 새로 주소를 입히는 구조여서 test 1,2,3모두 값이 변화가 가능하다는 결론입니다.
물론 이제는 공부를 한지 일주일이라는 시간이 흘러서 이미 내용을 알고 있지만 그냥 아는거와 체득을 한것은 큰 차이가 있잖아요?(지금은 무려 5개월이 지났네요...ㅎ)
전 이런 과정이 재밌습니다.ㅎ
이제는 본격적으로 map함수에 대한 실험을 진행해보고자 합니다.
a = '10 20'
x= map(int, a.split())
q= x[0] # TypeError: 'map' object is not subscriptable
w =x[1]
print(q)
print(type(q))
map object은 하나의 묶음 같은 것이지 시퀀스 형식의 자료형태가 아니기 때문에 인덱스를 이용한 호출이 불가능한 것 같습니다.
학습을 통해 map은 하나의 class라는 것을 알게 되었습니다. 따라서 tuple과 같은 시퀀스랑은 아예 다른 것이죠
a = '10 20'
x= map(int, a.split())
print(type(x)) #<class 'map'>
q,w =x
print(q) # 10
하지만 test 5에서 보신것과 같이 map함수의 값을 변수에 할당하여 값을 다시 부여할 수 있다는 점!
일반적으로 이런 형식으로 사용하기 보다는 test 3과 같이 값을 뽑거나 리스트 형태로 뽑는 문제가 더 많더군요
a = '10 20 30'
x = map(int, a.split())
q,w = x #ValueError: too many values to unpack (expected 2)
print(a)
e = x
print(e)
map object인 x에서 print(next(x))를 통해 원하는 결과값을 계속 뽑아낼수 있는 글을 보고 실험해본 결과입니다.
map object는 값의 갯수와 변수의 갯수가 맞지 않으면 에러가 발생하네요
이 글을 작성한지 거의 6개월이 지났는데 파이썬은 확실히 다른 언어에 비해 편한것 같아요 이제는 파이썬으로 인사이트를 얻는게 많이 없지만 밀린 글들을 마무리하면서 또 새로운 내용들로 찾아뵙도록 하겠습니다.