자료구조(파이썬) - 튜플
◾튜플
튜플(Tuple)
: 리스트와 비슷하지만 아이템 변경이 불가능- ('강호동', '박찬호', '이용규', '박승철', '강호동', '김지은')
- 아이템 변경(수정, 삭제 등) 불가능
- 숫자, 문자(열), 논리형 등 모든 기본 데이터 같이 저장 가능
- 다른 컨테이너 자료형 데이터 저장 가능
# 튜플
students = ('강호동', '박찬호', '이용규', '박승철', '강호동', '김지은')
print(students)
print(type(students))
# students[0] = 'Test' # 변경 불가, 오류 발생
- 리스트와 마찬가지로
인덱스
를 활용하여 아이템 조회
# 인덱스
students = ('강호동', '박찬호', '이용규', '박승철', '강호동', '김지은')
print(students)
print(students[0])
print(students[1])
print(students[2])
# 오류 발생
# print('없는 인덱스 : {}'.format(students[6]))
- 아이템 존재 유무 판단
아이템 in 튜플
: 튜플에 아이템이 있는 경우 True아이템 not in 튜플
: 튜플에 아이템이 없는 경우 True
# 아이템 존재 유무 판단
students = ('홍길동', '박찬호', '이용규', '박승철', '김지은')
searchName = input('학생 이름 입력 : ')
# in
if searchName in students:
print('in - {} 학생은 존재합니다.'.format(searchName))
else:
print('in - {} 학생은 존재하지 않습니다.'.format(searchName))
print('='*35)
# not in
if searchName not in students:
print('not in - {} 학생은 존재하지 않습니다.'.format(searchName))
else:
print('not in - {} 학생은 존재합니다.'.format(searchName))
len()
: 튜플의 길이(아이템의 개수)를 반환하는 함수
# len()
students = ('홍길동', '박찬호', '이용규', '박승철', '김은지', '강호동')
studentLength = len(students)
print(students)
print("len : {}".format(studentLength))
◾튜플 결합
+(덧셈 연산자)
: 양 튜플을 연결(확장)하여 새로운 튜플을 반환- 튜플은 값의 변경이 불가능하므로 결합이 불가능하지만 덧셈 연산자는 새로운 튜플을 반환하는 것이므로 사용할 수 있다.
- 리스트의 extend, remove, append 등은 사용할 수 없다.
# +(덧셈 연산자)
studentTuple1 = ('홍길동', '박찬호', '이용규')
studentTuple2 = ('박승철', '김지은', '강호동')
print(studentTuple1)
print(studentTuple2)
newStudents = studentTuple1 + studentTuple2
print(newStudents)
◾튜플 슬라이싱
[시작:종료:간격]
: 시작 <= n < 종료의 범위를 간격을 기준으로 아이템을 뽑을 수 있다.- 튜플에서 슬라이싱을 이용해 아이템을 변경할 수 없다
# 슬라이싱
students = ('홍길동', '박찬호', '이용규', '박승철', '김은지', '강호동')
print('1. {}'.format(students))
# 1. ('홍길동', '박찬호', '이용규', '박승철', '김은지', '강호동')
print('2. {}'.format(students[2:4]))
# 2. ('이용규', '박승철')
print('3. {}'.format(students[2:5:2]))
# 3. ('이용규', '김은지')
# 리스트의 아이템을 튜플 형식을 사용해 바꾸는 것은 가능하다
students = ['홍길동', '박찬호', '이용규', '박승철', '김은지', '강호동']
students[1:4] = ('park chanho', 'lee yonggyu', 'park seungcheol')
# 타입은 여전히 리스트이다.
print(students)
print(type(students))
slice(시작, 종료, 간격)
students = ('홍길동', '박찬호', '이용규', '박승철', '김은지', '강호동')
print('1. {}'.format(students))
# 1. ('홍길동', '박찬호', '이용규', '박승철', '김은지', '강호동')
print('2. {}'.format(students[slice(2,4)]))
# 2. ('이용규', '박승철')
print('3. {}'.format(students[slice(2,5,2)]))
# 3. ('이용규', '김은지')
◾리스트와 튜플
- 리스트 : 아이템 추가, 변경, 삭제가 가능하다.
- 튜플 : 아이템 추가, 변경, 삭제가 불가능하다.
# 리스트 추가, 변경, 삭제 가능
studnetList = ['홍길동', '박찬호', '이용규']
print(studnetList)
# 추가
studnetList.append('강호동')
print(studnetList)
# 변경
studnetList[2] = '유재석'
print(studnetList)
# 삭제
studnetList.pop()
print(studnetList)
# 튜플 추가, 변경, 삭제 불가능
studnetTuple = ('홍길동', '박찬호', '이용규')
print(studnetTuple)
# 추가 : 오류 발생
# studnetTuple.append('강호동')
# 변경 : 오류 발생
# studnetTuple[2] = '유재석'
# 삭제 : 오류 발생
# studentTuple.pop()
- 튜플은 선언 시 괄호 생략이 가능하다.
- 리스트는 선언 시 괄호 생략이 불가능하다.
# 튜플 괄호
studentTuple = ('홍길동', '박찬호', '이용규')
print('type : {}, tuple : {}'.format(type(studentTuple), studentTuple))
# 튜플 괄호 생략
studentTuple = '홍길동', '박찬호', '이용규'
print('type : {}, tuple : {}'.format(type(studentTuple), studentTuple))
# 리스트 괄호
studentList = ['홍길동', '박찬호', '이용규']
print('type : {}, tuple : {}'.format(type(studentList), studentList))
- 리스트와 튜플 변환 : 리스트와 튜플은 자료형 변환 가능
# 리스트
studentList = ['홍길동', '박찬호', '이용규']
print('type : {}, tuple : {}'.format(type(studentList), studentList))
# 아이템의 값을 변경하고 싶지 않다면 튜플로 변환하면 된다.
castingTuple = tuple(studentList)
print('type : {}, tuple : {}'.format(type(castingTuple), castingTuple))
# 튜플
studentTuple = ('홍길동', '박찬호', '강호동')
print('type : {}, tuple : {}'.format(type(studentTuple), studentTuple))
# 아이템 값을 변경하고 싶다면 리스트로 변환하면 된다.
castingList = list(studentTuple)
print('type : {}, tuple : {}'.format(type(castingList), castingList))
◾튜플 정렬
- 튜플은 수정이 불가하기 때문에 리스트로 변환 후 정렬
# 정렬
students = ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은')
print(students)
# 리스트 변환
students = list(students)
# 정렬
students.sort(reverse=False)
# 튜플 변환
students = tuple(students)
print(students)
sorted()
: 정렬 함수로 리스트 자료형으로 반환- 튜플도 정렬할 수 있지만 다시 튜플로 형변환을 해야한다.
- sorted(데이터, reverse=flag)
# sorted()
students = ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은')
print(students)
newStudents = sorted(students, reverse=False)
print(newStudents)
newStudents = tuple(newStudents)
print(newStudents)
◾튜플 반복문
1. For 문
- for문을 이용해 튜플의 아이템을 참조할 수 있다.
# for
# len()
cars = ('그랜저', '소나타', '말리부', '카니발', '쏘렌토')
for i in range(len(cars)):
print(cars[i])
# Iterable
for car in cars:
print(car)
# enumerate()
for idx, car in enumerate(cars):
print(car)
2. While 문
- while문을 이용해 튜플의 아이템을 참조할 수 있다.
# while
cars = ('그랜저', '소나타', '말리부', '카니발', '쏘렌토')
# len() 사용
n = 0
while n < len(cars):
print(cars[n])
n += 1
# flag 사용
n = 0
while True:
print(cars[n])
n += 1
if n == len(cars):
break
Author And Source
이 문제에 관하여(자료구조(파이썬) - 튜플), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@skarb4788/자료구조파이썬-튜플저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)