[python] 리스트 vs 튜플

김수연·2023년 2월 3일
0
arr = [1, 23, 3, 54, 7]
t = (1, 23, 3, 54, 7)

print(arr)
print(t)
[1, 23, 3, 54, 7] # list
(1, 23, 3, 54, 7) # tuple

1. 값 수정 가능여부?

  • 리스트는 값을 바꿀 수 있다.
  • 튜플은 값이 한번 정해지면 바꿀 수 없다.
    ∴ 튜플은 주로 값이 바뀌지 않는 하나로 결정되는 순간에 사용
arr = [1, 23, 3, 54, 7]
t = (1, 23, 3, 54, 7)

arr[0] = 2
t[0] = 4 # TypeError: 'tuple' object does not support item assignment

2. unpacking

  • 리스트/ 튜플 모두 upacking이 가능하다.
  • unpacking : 원소 개수에 맞춰 왼쪽에 변수를 적어주면 각각 매칭되는 것
arr = [1, 23]
t = (1, 23)

a1, b1 = arr
a2, b2 = t

print(a1, b1)
print(a2, b2)
1 23
1 23

+ unpacking 관련 추가 내용

  • 주어진 변수와 원소 개수가 일치하지 않는 경우, 오류가 생긴다.
a, b = [1, 2, 3, 4, 5, 6, 7]
print(a, b)
ValueError: too many values to unpack (expected 2)
  • 만약 앞의 두개의 변수에만 매칭하고 싶을 땐
    1) _ 사용 (안 쓸 변수라는 의미로 underscore를 사용)
a, b, _ = [1, 2, 3]
print(a, b)
1, 2

2-1) 총 원소 개수를 모르는 상황에서, 앞의 2개의 변수만 출력하고 싶을 땐 * 사용
→ rest에 나머지가 들어간다.

a, b, *rest = [1, 2, 3, 4, 5, 6, 7]
print(a, b, rest)
1 2 [3, 4, 5, 6, 7]

2-2) 앞의 2개, 뒤의 1개만 출력도 가능

a, b, *rest, c = [1, 2, 3, 4, 5, 6, 7]
print(a, b, rest, c)
1 2 [3, 4, 5, 6] 7
profile
Quien no arriesga, no gana nada

0개의 댓글