[python] 데이터 타입 (7) 튜플 자료형

김재현·2023년 2월 26일
0

Python Grammar

목록 보기
8/12

1. 튜플의 특징

리스트와 비슷한 자료형입니다. list(), tuple()와 같은 함수로 형변환이 가능합니다. 이 둘은 다음과 같은 차이가 있습니다.

  1. 대괄호가 아니라 소괄호로 선언합니다.
  2. 리스트와 달리, 한 번 선언하면 값을 바꿀 수 없습니다. 그래서 키 값으로 사용될 수 있습습니다.
    (아이템 추가, 변경, 삭제가 불가하다)
  3. 리스트에 비해 상대적으로 공간 효율적입니다.

2. 튜플 활용

2.1 복합할당

  • 일반적인 할당하는 방법
[a, b] = [10, 20]
(c, d) = (30, 40)

print(a,b,c,d)

10 20 30 40

  • 괄호가 없어도 튜플로 인식될 수 있다면 튜플 (선언 시 괄호 생략 가능)
tuple_sample = 10, 20, 30, 40
print("tuple_sample:", tuple_sample)
print("type(tuple_sample):", type(tuple_sample))

tuple_sample: (10, 20, 30, 40)
type(tuple_test): <class 'tuple'>


2.2 튜플 조회

  • 튜플 요소에 접근하는 방법
tuple_sample = (10, 20, 30)

tuple_sample[0]
tuple_sample[1]
tuple_sample[2]

10
20
30

  • 내부 튜플 조회
players = ( ('수비', '김민재'), ('미드필더', '황인범'), ('공격수', '황희찬') )
for position, player in players:
   print('{} 포지션 : {}'.format(position, player))

수비 포지션 : 김민재
미드필더 포지션 : 황인범
공격수 포지션 : 황희찬


2.3 튜플 슬라이싱

  • 인덱스 활용
  • slice() 함수

2.4 튜플의 요소 추가

  • 리스트에서 사용할 수 있는 extend()함수는 튜플에서 사용할 수 없습니다.
tuple_1 = (1, 2, 3)
tuple_2 = (4, 5, 6)

tuple_3 = tuple_1+tuple_2
print(tuple_3)

(1, 2, 3, 4, 5, 6)

  • 튜플에 요소 추가하는 방법
num1 = (1, 3, 5, 7)
num2 = (2, 4, 6)

for i in num2:
  if i not in num1:
    num1 = num1 + (i, )

print(num1)

(1, 3, 5, 7, 2, 4, 6)


2.5 스왑

a, b = 10, 20

print(a,b)
a,b = b,a
print(a,b)

10 20
20 10


2.6 튜플의 정렬

  1. 리스트로 변환 후 정렬 : list() → sort() → tuple()
  2. sorted() 함수 활용 : 튜플을 정렬하여 리스트로 만드는 함수

2.7 튜플과 반복문

for i, value in enumerate([1, 2, 3, 4, 5, 6]):
  print("{}번째 요소는 {}입니다".format(i, value))

0번째 요소는 1입니다
1번째 요소는 2입니다
2번째 요소는 3입니다
3번째 요소는 4입니다
4번째 요소는 5입니다
5번째 요소는 6입니다


2.8 튜플을 리턴하는 함수

  • 예시 1
def test():
  return 10, 20

a, b = test()
print(a, b)

10 20

  • 예시 2
a, b = 97, 40
print(divmod(a,b))

(2, 17)


3. 기타

3.1 요소 하나를 가지는 튜플

(273, )

3.2 딕셔너리에 키로 사용가능

딕셔너리 키에는 리스트는 사용이 불가능합니다. 그 이외 튜플을 포함한 다른 자료형은 사용이 가능합니다.

dict = {
  (0, 0) : 10,
  (0, 1) : 20,
  (1, 0) : 30,
  (1, 1) : 40
  
print( dict[(0,0)] )
print( dict[0,0] )
}

10
10


4. 참고 자료

0개의 댓글