Python에서 List and Tuple (Python document)은 순서가 있는 컬렉션 데이터 구조입니다. 두 자료구조(List and Tuple)는 비슷해 보이지만 사용 목적과 성능에서 차이가 있습니다.

list

  • 특징: 가변적(mutable), 요소 추가/삭제 가능
  • 정의: 대괄호 [] 사용

장점

  1. 유연성: 요소를 추가, 삭제, 수정 가능.
  2. 다양한 기능: append(), extend(), pop() 등 메서드 제공.
  3. 동적 크기: 필요에 따라 크기 조정 가능.

단점

  1. 메모리 사용량: 가변적이므로 더 많은 메모리 필요.
  2. 속도: 변경 가능성 때문에 tuple보다 느림.

tuple

  • 특징: 불변적(immutable), 수정 불가
  • 정의: 소괄호 () 사용

장점

  1. 불변성: 데이터 보호에 유리, 해싱 가능(딕셔너리 키로 사용 가능).
  2. 속도: 불변적이라 메모리와 처리 속도가 효율적.
  3. 안전성: 변경할 필요 없는 데이터를 보관할 때 유리.

단점

  1. 유연성 부족: 요소 추가, 삭제, 수정 불가.
  2. 메서드 제한: list에 비해 제공되는 메서드가 적음(예: append() 없음).

List and Tuple Code

colors = ['red', 'blue', 'black']

colors.append('white')
print(colors)  # ['red', 'blue', 'black', 'white']

# insert list
colors.insert(1, 'yellow')
print(colors)  # ['red', 'yellow', 'blue', 'black', 'white']

# edit list
colors[2] = 'gray'
print(colors)  # ['red', 'yellow', 'gray', 'black', 'white']

# delete list
colors.remove('yellow')
print(colors)  # ['red', 'gray', 'black', 'white']

# size of list
print(len(colors))  # 4

for color in colors:
    print(color)

# slice
print(colors[1:3])  # ['gray', 'black']

print(type(colors))
colors = tuple(colors)
print(type(colors))

print(colors[0])  # 'red'
print(colors[1:3])  # ('gray', 'black')

# size of tuple
print(len(colors))  # 4

for color in colors:
    print(color)

colors_list = list(colors)
print(colors_list)  # ['red', 'gray', 'black', 'white']

Output

['red', 'blue', 'black', 'white']
['red', 'yellow', 'blue', 'black', 'white']
['red', 'yellow', 'gray', 'black', 'white']
['red', 'gray', 'black', 'white']
4
red
gray
black
white
['gray', 'black']
<class 'list'>
<class 'tuple'>
red
('gray', 'black')
4
red
gray
black
white
['red', 'gray', 'black', 'white']

비교

특성ListTuple
변경 가능성가변적(Mutable)불변적(Immutable)
정의 방식[] 사용() 사용
속도느림빠름
메모리더 많은 메모리 사용더 적은 메모리 사용
활용동적으로 변하는 데이터고정된 데이터 보관
해싱 가능성불가능가능

사실 속도로 인해 문제가 발생할 정도의 차이를 느끼지는 못했는데요. 아직 제가 사용하는 데이터의 수가 적어서 그렇다고 생각됩니다. 그렇지만 큰 데이터를 두가지 형식으로 다룰 일이 있을지는 모르겠네요….

저는 List and Tuple이 ‘자료구조’ 이지만 사실 변수의 모임 정도로 생각하고 사용을 합니다. 그러다 보니 많은 분들이 삭제를 안하고 함수 끝까지 유지하다가 삭제합니다. 저는 사실 불필요한 상황이 왔을때 바로 바로 삭제하는 것을 권고합니다.

By Mark

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다