본문 바로가기

Programming/CxO를 위한 코딩

04-3 튜플(tuple)

반응형

튜플(tuple)은 리스트(list)와 비슷한 기능을 가지는데, 차이점은 한 번 만든 튜플 자료들을 추가/삭제를 못한다는 것입니다. 즉, 처음에 만든 자료를 읽기만 하는 용도로 쓸 데 사용합니다.

 

그럼 추가/삭제를 할 수있는 리스트만 사용하지 왜 튜플이란 걸 만들어서 귀찮게 할까요?

속도 때문입니다. 추가/삭제할 수 없는 튜플은 리스트에 비해서 생성 및 읽기 속도가 빠릅니다. 리스트는 나중에 추가/삭제가 가능한 구조로 데이터를 생성하느라 시간이 걸리는데 반해, 튜플은 그런 작업이 없기에 빠릅니다.

그래서, 추가/삭제가 필요 없을 것 같은 데이터를 처리할 때는 튜플을 사용하면 좀 더 낫긴 한데, 자료가 수만 건 이상이 되지 않는 한, 사실 속도 차이를 느끼기 힘듭니다. 

그냥 리스트만 사용해도 충분합니다. 

튜플 요약

  • 튜플은 리스트와 비슷한데 한 번 만든 자료들에 대해 추가/삭제할 수 없습니다. 따라서, 처음에 튜플 자료를 생성한 후, 그 데이터를 읽기만 할 수 있습니다.
  • 튜플의 생성은 콤마로 구분된 원소들을 소괄호 '( )'로 감싸서 생성:    a = (1,2,3,4)
  • 인덱스 번호를 이용해서 원소들을 읽을 수 있음. 인덱스 번호는 0부터 시작:   print(a[0])   print(a[0:2])
a = (0,1,2,3,4,5)
print(a)

print(a[0])  #0
print(a[-1]) #5
print(a[1:3]) #1,2
print(a[3:]) #3,4,5
튜플 요약만 읽고 전부 이해되었다면, 아랫부분에 있는 내용들 스킵하고 다음 글로 넘어가도 됩니다.

다음글: 04-4 집합(Set)


1. 생성(Create)

튜플은 한 번 생성하면 수정이 불가하기에, 비어있는 튜플을 만들고 나서 나중에 추가하는 방법이 안됩니다. 처음부터 완전한 원소를 집어넣고 만들어야 합니다. 

a = (2,4,6,8)
print(a)

 

튜플의 경우 원소들을 소괄호 '(  )'로 감싸는 것에 유의합니다. 리스트의 경우 꺽쇠 '[   ]'를 사용했고, 딕셔너리는 중괄호 '{  }'가 사용됩니다.

 

2. 읽기(Read)

리스트와 마찬가지로 인덱스 번호를 이용해서 원소들을 읽을 수 있습니다. 

a = (0,1,2,3,4,5)
print(a)

print(a[0])  #0
print(a[-1]) #5
print(a[1:3]) #1,2
print(a[3:]) #3,4,5

 

인덱스 번호는 0부터 시작하고, -1은 제일 끝 원소에 대한 인덱스이고, 범위를 지정해서 읽을 수 있습니다. [x:y]는 (x, x+1, ..., y-1)을 가리킵니다.

 

리스트와 마찬가지로 for 구문을 이용해서 튜플 내 원소를 차례로 읽을 수 있습니다.

 

a = (0,1,2,3,4,5)
for i in a:
    print(i)

 

3. 수정(Update)

리스트(list)와 달리 원소를 추가하거나 삭제할 수 없습니다.

 

a = (0,1,2,3,4)

a[5]=5  # 에러
del a[0]  #에러

4. 삭제(Delete)

튜플로 만들어진 원소들은 삭제가 안됩니다. 

 

단, 튜플 전체에 대한 삭제는 가능합니다. 

 

a = (0,1,2,3,4,5)
print(a)

del a #튜플 a를 삭제하는 것
print(a)  # error: a가 삭제되었기 때문

 

 

-끝-


다음글: 04-4 집합(Set)

목차로 이동:  [목차]CxO를 위한 코딩 강좌(파이썬을 중심으로)

 

반응형

'Programming > CxO를 위한 코딩' 카테고리의 다른 글

04-4 배열(numpy.array)  (4) 2020.06.25
04-4 집합(set)  (0) 2020.06.25
04-2 딕셔너리(dict)  (0) 2020.06.25
04-1 리스트(list)  (0) 2020.06.25
04장. 데이터 다루기  (0) 2020.06.25