본문 바로가기

Python 기초

파이썬 기초(5)-튜플(Tuple) 자료형

*이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*

1. 튜플(Tuple)

여러 가지 데이터 타입의 값을 저장할 수 있는, 불변성(Immutable)을 가진 컬렉션(여러 데이터를 하나의 단위로 관리하는 데이터구조)입니다. 리스트와 비슷하면서도 차이점이 있는데 다음과 같습니다.

  • 리스트는 [] 대괄호, 튜플은 () 소괄호로 둘러싸여있다.
  • 리스트는 요소값의 생성, 수정, 삭제가 가능하나, 튜플은 요솟값 자체의 변형이 불가능하다.
#튜플의 형태
a=(1,) #요소가 1개일 경우 ,(콤마)를 붙여야 한다
print(a)
print(type(a))
b=(1,2,3)
c=1,2,3
print(b)
print(type(b))
print(c)
print(type(c))
튜플 자료형의 () 소괄호는 생략 가능하다.
a=(1,2,('문자열1','문자열2'))
print(a[1])
print(a[2])
print(type(a[2]))
print(a[2][0])
print(type(a[2][0]))
튜플 자료형의 예시) 안에 튜플이 들어가기도 하며, type()으로 봤을 때 문자열 자료형도 들어간다.

1-1. 튜플의 요소값 변경과 삭제

튜플안의 요소값 자체는 변형이 불가능합니다.

'tuple' object does not suppert item assignment : 튜플의 오브젝트는 요소값 변경을 지원하지 않는다 알려주는 에러

하지만 튜플 자료형 안에 있는 리스트 자료형안의 요소값은 수정 가능합니다.

#튜플안의 리스트안의 값 변경
a=(1,2,['one','two','three'])
print(a)
a[2][1]='four'
print(a)

튜플의 인덱싱, 슬라이싱도 리스트 자료형과 동일합니다

  • 인덱싱: -1차원 아래로 출력
  • 슬라이싱: 현재 차원 그대로 출력
#튜플 인덱싱, 슬라이싱
a=(1,2,3)
print(a[0])
print(a[:1])

1-2. 튜플의 결합

튜플 자료형은 요소값 자체의 변형이 불가능한것이지, 요소값의 추가, 반복으로 값을 늘리는 것은 가능합니다.

#튜플 값 추가,반복
a=(1,2,3,3,4,5)
b=(6,7,8,9,10)
print(a+b)
print(b+a)
a+=(13,15)
print(a)
print(b*4)

인덱싱, 슬라이싱 형태로도 결합합니다.

#튜플 인덱싱, 슬라이싱 결합
b=(6,7,8,9,10)
print(b[0]+ b[2])
print(b[:1]+b[1:2])

도치 형식으로 튜플 자료형을 변수 선언할 수 있습니다. 도치 형식은 리스트에서 잘 사용하지 않으나, 튜플에서 사용합니다.

# 튜플 도치 변수선언
n1, n2, n3 =('first','second','third')
print(n1)
print(n2)
print(n3)

1-3. In 연산자

In연산자는 튜플안에 해당 요소가 있는지 bool값(참,거짓)으로 알려줍니다. 특정 자료를 찾을 때 사용합니다.

# in연산자
print('first' in ('first','second','third'))
print(10 in (1,2,3,4,5,6,76,7))

1-4. 튜플의 정렬

튜플 자료형은 불변성을 가진 자료형이기 때문에, sort() 메서드와 sorted() 함수 중에서 요소값의 변형과 순서 변형을 할 수 있는 sort() 메서드 사용이 불가능합니다. 따라서, 튜플의 요소값의 순서만 정렬하는 방식으로, 튜플을 정렬하기 위해선 sorted() 함수만이 사용가능합니다.

#sorted() 함수로 튜플 정렬
#오름차순 정렬
a=(531,234,1,37,64)
a=sorted(a)
print(a)
#내림차순 정렬
a=sorted(a,reverse=True)
print(a)

2. Input() 함수

사용자에게 데이터를 입력받을 수 있는 함수이며, 데이터는 항상 문자형(str)으로 입력됩니다. 입력은 엔터가 입력될 때, 엔터 전까지 모두 받습니다.

#input()함수
name=input()

입력은 엔터가 입력될 때, 엔터 전까지 모두 입력

문자열도 입력가능합니다.

#input()함수안에 문자열
name=input('문자열 입력할 수 있어요')

문자열을 입력할 수 있다면, {}를 활용한 format()함수와 f-string 또한 이용가능합니다.

# format()함수와 input()함수 복합
a=input('파이썬은 영어로 뭐라고 할까요?' )
print(f'{a}, 정답이다')

format함수를 f-string으로 활용할땐, f'{}에서 {}중괄호 안에 항상 변수가 들어가야 함을 잊지 말아야한다.

# format()함수와 input()함수 복합2
a,b,c=input('파이썬 외에는 어떤 언어가 있을까요? 3가지를 말해보세요 ').split(' ')
print(f'{a} {b} {c} 그렇네요')

동시에 여러 변수를 선언하기위해, 메모리값을 분열해주는 split()메서드 활용
input()함수에 적은 데이터는 변수선언되어 변수의 메모리 값이 된다.

input()함수를 활용해서 문자열을 정수타입으로 변환하는 함수를 사용가능합니다.

#input()함수 문자열 정수타입형 변환
a=input('첫번째 숫자 입력 ')
b=input('두번째 숫자 입력 ')
print(f'결과', int(a)+int(b))