파이썬은 리스트(list)와 유사한 튜플(tuple) 데이터 타입을 제공합니다.
튜플은 리스트와 유사하게 여러 데이터를 담을 수 있습니다.
다만 튜플은 한 번 생성된 데이터를 변경할 수 없다는 특징이 있습니다.
튜플은 값을 변경하지 않고 계속 참조하고 싶을 때 고려할 수 있는 데이터 타입입니다.
파이썬의 튜플에 대해서 알아보도록 하겠습니다.
1. tuple 생성
파이썬에서 튜플은 ()로 표현되며 다음과 같은 방법으로 생성 가능합니다.
a = (1, 2, 3)
b = ('Green', 1, (1, 2))
c = tuple((1, 2, 3))
여러 타입을 한 튜플 안에 넣을 수 있으며 튜플 자체도 타입이기 때문에 포함될 수 있습니다.
간단하게 ()로 초기화를 할 수도 있고 tuple()을 사용할 수도 있습니다.
처음 생성한 이후에는 수정이 되지 않기 때문에 생성할 때 필요한 데이터를 입력해야 합니다.
2. tuple 연산
곱셈과 덧셈 연산자를 통해 튜플끼리 더하거나 값을 반복해서 생성할 수 있습니다.
a = (1, 2)
b = (3, 4)
c = a + b
print(c)
d = a * 3
print(d)
결과는 다음과 같이 출력됩니다.
덧셈은 두 개의 튜플을 하나의 튜플로 합쳐서 만들어 줍니다.
곱셈의 경우 내부의 값이 곱한 값만큼 반복됩니다.
3. tuple 길이 확인
리스트와 마찬가지로 len() 메소드를 호출해서 길이를 알아낼 수 있습니다.
a = (1, 2, 3, 4)
print(len(a))
총 4개의 값이 들어있기 때문에 4를 출력합니다.
4. 인덱싱과 슬라이싱
튜플은 한 번 생성되면 수정이 불가능하지만 인덱싱과 슬라이싱은 가능합니다.
인덱싱을 통해 원하는 위치의 값을 가져올 수 있습니다.
a = ('Red', 1, 2, 'Green')
print(a[0])
print(a[1])
print(a[2])
print(a[3])
인덱스는 0부터 시작하기 때문에 a[0]으로 값을 가져오면 가장 처음의 값을 가져옵니다.
순차적으로 값을 가져오는 것을 확인할 수 있습니다.
슬라이싱은 리스트와 동일하게 동작하며 다음과 같은 형태로 지정합니다.
[시작 인덱스(포함):끝 인덱스(미포함):증가값] |
시작 인덱스에 있는 값은 포함되며 끝 인덱스의 값의 포함되지 않습니다.
증가 값은 일반적으로 표기하지 않으면 1씩 증가합니다.
a = ('Red', 'Green', 'Blue', 'Yellow', 'Black', 'White')
print(f'a[:]: {a[:]}') # ('Red', 'Green', 'Blue', 'Yellow', 'Black', 'White')
print(f'a[3:]: {a[3:]}') # ('Yellow', 'Black', 'White')
print(f'a[:3]: {a[:3]}') # ('Red', 'Green', 'Blue')
print(f'a[3:5]: {a[3:5]}') # ('Yellow', 'Black')
print(f'a[1:6:2]: {a[1:6:2]}') # ('Green', 'Yellow', 'White')
print(f'a[::-1]: {a[::-1]}') # ('White', 'Black', 'Yellow', 'Blue', 'Green', 'Red')
시작 인덱스가 생략되면 0번째부터 값을 가져오며 끝 인덱스가 생략되면 가장 마지막의 값까지 가져옵니다.
그래서 a[:]와 같이 시작과 끝을 명시하지 않으면 원본 튜플과 동일한 튜플이 생성됩니다.
시작만 명시하면 해당 인덱스부터 끝까지 가져오게 됩니다.
반대로 끝만 명시하면 처음부터 끝 인덱스 전까지 가져옵니다.
a[1:6:2]와 같이 증가 값을 지정하면 값을 건너 뛰면서 가져올 수 있습니다.
마지막으로 a[::-1]은 원본 튜플과 완전히 반대의 순서를 가지는 새로운 튜플을 생성합니다.
5. 기타 tuple 메소드
튜플은 값을 변경하는 reverse()나 sort()같은 기능은 제공하지 않습니다.
값이 몇 개가 존재하는지 확인하기 위한 count()와 값이 위치한 인덱스를 찾기 위한 index()를 제공합니다.
a = (1, 1, 2, 4, 7, 10)
print(a.count(1))
print(a.count(100))
print(a.index(10))
try:
print(a.index(100))
except ValueError:
print('100 is not in tuple')
다음과 같이 결과를 출력합니다.
count()는 해당 값이 몇 개가 존재하는지 결과를 리턴합니다.
index()는 존재할 경우 해당 인덱스를 리턴하며 없는 값일 경우 ValueError 예외를 발생시킵니다.
그렇기 때문에 index()를 사용할 때는 예외처리에 신경써야 합니다.
'Programming > Python' 카테고리의 다른 글
[Python] 파이썬 셋(set) 사용 방법 (0) | 2022.08.18 |
---|---|
[Python] 파이썬 리스트(list) 사용 방법 (5) | 2021.04.08 |
파이썬에서 CSV(Comma Separated Values) 파일 읽기/쓰기 (0) | 2020.08.12 |
파이썬 openpyxl로 엑셀(Excel) 파일 읽기/쓰기 (0) | 2020.07.25 |
파이썬에서 JSON 데이터 형식 처리 (0) | 2019.10.24 |