[Python] List & Tuple -2

Hyeseong·2020년 12월 2일
0

python

목록 보기
5/22
post-thumbnail

Tuple Advanced

튜플은 서로 다른 데이터 타입을 저장 할 수 있는 container이며 immutable 특징을 갖고 있는 불변임!

Packing & Unpacking

두 번째 프린트문은 패킹해서 값을 보냄.
세 번째 값은 아예 정수로 풀어내버림

print('ex5-1 -', divmod(100,9))
print('ex5-2 -', divmod(*(100,9)))
print('ex5-3 -', *(divmod(100,9))) 

# 결과:
# ex5-1 - (11, 1)
# ex5-2 - (11, 1)
# ex5-3 - 11 1
x,y , *rest = range(10)
print('ex5-4 -', x,y,rest) # 2~9까지 값이 리스트로 묶어벼림

# 결과: ex5-4 - 0 1 [2, 3, 4, 5, 6, 7, 8, 9]

2부터 9까지 리스트 값으로 묶인채 값이 반환 되는 걸 볼 수 있음

x,y , *rest = 1,2,3,4,5,6
print('ex5-5 -', x,y,rest) # 

# 결과: ex5-5 - 1 2 [3, 4, 5, 6]

이를 통해서 메서드에 왜? def test(*args, **kwargs)로 인자를 받는지 파악 할 수 있음.

Mutable(가변) vs Immutable(불변)

리스트는 값을 변경 할 수 있지만 튜플은 값 자체는 변경할 수 없음.

아래에서 배울 포인트
1. 자기 자체를 재할당 한다는 것!
2. 새로운 객체를 생성한다는 것!


l, m = (10,15,20), list((10,15,20))
print()
print('ex6-1')
print(type(l),id(l))
print(type(m),id(m))
l = l * 2
m = m * 2

print('\n','ex6-2')
print(l,m,id(l),id(m))

output

ex6-1
<class 'tuple'> 1304391320640
<class 'list'> 1304391636288

 ex6-2
(10, 15, 20, 10, 15, 20) [10, 15, 20, 10, 15, 20] 1304391248480 1304392494656

튜플은 값을 수정하는 할당 연산자를 지원하지 않습니다.
아래와 같은 경우는 오류를 발생시켜요.

l[0] = 3 
# 결과: TypeError: 'tuple' object does not support item assignment
l *= 2
m *= 2
print()
print('\n','ex6-3')
print(l,m,id(l),id(m))

# 결과값:
# ex6-3
#(10, 15, 20, 10, 15, 20, 10, 15, 20, 10, 15, 20) [10, 15, 20, 10, 15, 20, 10, 15, 20, 10, 15, 20] 2421808451936 2421809688320
profile
어제보다 오늘 그리고 오늘 보다 내일...

0개의 댓글