주요 학습내용
튜플(Tuple)
1) 아이템 조회(index) 및 개수 확인(len())
2) 아이템 존재 유/무 판단하기(in/not in)
3) 튜플 아이템 참조(for문, while문)
4) 튜플 결합 ( + )
5) 원하는 아이템 뽑아내기(슬라이싱)
6) 튜플 정렬(sort() / sort(reverser = True) / sorted())
7) 튜플 vs 리스트

students = ('홍길동', '박찬호', '이용규', '박승철', '김지은')
for i in range(0, len(students)):
print(f'students[{i}]: {students[i]}')
numbers = (10, 20, 30, 40, 50)
for i in range(0, len(numbers)):
print('numbers[{}]: {}'.format(i, numbers[i]))
출력 결과 :

students = ('홍길동', '박찬호', '이용규', '박승철', '김지은')
searchName = input('학생 이름 입력: ')
if searchName in students:
print('{} 학생은 우리반 학생입니다.'.format(searchName))
if searchName not in students:
# 그냥 else: 도 사용 가능
print('{} 학생은 우리반 학생이 아닙니다.'.format(searchName))
# in/not in 키워드는 문자열에서도 사용 가능
출력 결과 :
For문 사용

예제(for문) :
classInfo = ( (1, 18), (2, 19), (3, 23), (4, 21), (5, 20), (6, 22), (7, 17),) minClassNo = 0; maxClassNo = 0 minCnt = 0; maxCnt = 0 for classNo, cnt in classInfo: if minCnt == 0 or minCnt > cnt: minCnt = cnt minClassNo = classNo if maxCnt == 0 or maxCnt < cnt: maxCnt = cnt maxClassNo = classNo print(f'학생 수가 가장 적은 학급(학생수): {minClassNo}학급({minCnt}명)') print(f'학생 수가 가장 적은 학급(학생수): {maxClassNo}학급({maxCnt}명)')
출력 결과 :
While문 사용
예제(while문) :
classInfo = ( (1, 18), (2, 19), (3, 23), (4, 21), (5, 20), (6, 22), (7, 17),) minClassNo = 0; maxClassNo = 0 minCnt = 0; maxCnt = 0 n = 0 while n < len(classInfo): if minCnt == 0 or minCnt > classInfo[n][1]: minCnt = classInfo[n][1] minClassNo = classInfo[n][0] if maxCnt == 0 or maxCnt < classInfo[n][1]: maxCnt = classInfo[n][1] maxClassNo = classInfo[n][0] n += 1 print(f'학생수가 가장 적은 학급(학생수): {minClassNo}학급({minCnt}명)') print(f'학생수가 가장 많은 학급(학생수): {maxClassNo}학급({maxCnt}명)')
출력 결과 :
tuple3 = tuple1 + tuple2
(새로운 tuple생성)
students1 = ('홍길동', '박찬호', '이용규')
students2 = ('박승철', '김지은', '강호동')
print('student1: {}'.format(students1))
print('student2: {}'.format(students2))
print('-'*50)
students3 = students1 + students2
print('student1: {}'.format(students1))
print('student2: {}'.format(students2))
print('student3: {}'.format(students3))
출력 결과 :
(기존 student1과 student2에는 변동X, students3 생성됨)
- 만약 .extend() 사용한 경우, 아래와 같은 오류 안내 메세지를 확인할 수 있다
students1.extend(students2)출력 결과 :

# 슬라이싱 할 때 단계 설정 가능[a:b:단계(n)]
numbers = (2, 50, 0.12, 1, 9, 7, 17, 35, 100, 3.14)
print('numbers: {}'.format(numbers))
print('numbers[2:-2]: {}'.format(numbers[2:-2]))
print('numbers[2:-2]: {}'.format(numbers[2:-2:2]))
print('numbers[2:-2]: {}'.format(numbers[:-2:2]))
print('numbers[2:-2]: {}'.format(numbers[::2]))
출력 결과 :
튜플은 기본적으로 아이템 변경이 불가능하기 때문에, 슬라이싱을 통한 아이템 변경을 하기 위해서는 우선적으로 리스트로 자료구조를 변경해주어야 한다
리스트로 변경 안했을 경우,
리스트로 변경 한 경우,
numbers = list(numbers) numbers[0:1] = ['two'] print('numbers: {}'.format(numbers)) print('-'*50)```
단, 리스트에 튜플 아이템으로는 변경 가능
(전체 자료구조는 리스트이기 때문에)
studentsList = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은'] print(f'studentsLists: {studentsList}') studentsList[1:4] = ('park chanho', 'lee younggyu', 'kang hodong') print(f'studentsLists: {studentsList}') print(f'studentsLists: {type(studentsList)}') print('-'*50)
출력 결과 :
# 1) list 변환 후 정렬
students = ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은')
print(type(students))
print((students))
students = list(students)
print(type(students))
students.sort()
print(students)
students = tuple(students)
print(type(students))
print(students)
print('='*50)
출력 결과 :
sorted()를 이용하면, 리스트로 변경하지 않고도 정렬 가능
sorted()는 리스트 자료형을 반환한다
students1 = ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은') print(students1) print(type(students1)) sorted(students1) print(sorted(students1)) print(type(sorted(students1)))
출력 결과 :
| 구분 | 리스트(List) | 튜플(Tuple) |
|---|---|---|
| 아이템 추가/변경/삭제 | O | X |
| 아이템 결합 | O | O |
| 선언시 괄호 삭제 | X | O |
| 자료형 변환 | O | O |