Tuple Advanced

Unpacking

b, a = a, b #이거 다른 언어 에서 안됨. ㄷㄷ

print(divmod(100, 9))
print(divmod(*(100, 9)))
print(*(divmod(100, 9)))

(11, 1)
(11, 1)
11 1
x, y, *rest = range(10)
print(x, y, rest)

0 1 [2, 3, 4, 5, 6, 7, 8, 9]

x, y, *rest = range(2)
print(x, y, rest)

0 1 []

x, y, *rest = 1, 2, 3, 4, 5
print(x, y, rest)

1 2 [3, 4, 5]

<aside> 💡 만약 x = 1, 2, 3, 4, 5 로 하면 tuple 형태로 저장된다. (1,2,3,4,5)

</aside>

Mutable(가변) vs Immutable(불변)

l = (15, 20, 25)
m = [15, 20, 25]

print(l, id(l))
print(m, id(m))

(15, 20, 25) 1675295486592
[15, 20, 25] 1675297803648

l = l * 2
m = m * 2

print(l, id(l))
print(m, id(m))

(15, 20, 25, 15, 20, 25) 1675297436864
[15, 20, 25, 15, 20, 25] 1675297813120

numpy에서는 브로드캐스팅이라고도 하는데.. 전체 원소를 두배로 곱했는데 똑같은 거지만 새로운 변수에 입력했기 때문에 메모리 주소가 다르다.

뒤에 이걸 적어보자.

l *= 2
m *= 2

print(l, id(l))
print(m, id(m))

(15, 20, 25, 15, 20, 25, 15, 20, 25, 15, 20, 25) 2249697073904
[15, 20, 25, 15, 20, 25, 15, 20, 25, 15, 20, 25] 2249699946944

리스트는 메모리가 똑같아 진다. 그러나 튜플은 메모리 재할당이 이루어진다.

파이썬 정렬? sort vs sorted

두 개 큰 차이가 있고, 맞게 잘 사용하라고 레퍼런스에 권장하고 있다.