◾튜플
튜플(Tuple)
: 리스트와 비슷하지만 아이템 변경이 불가능
- ('강호동', '박찬호', '이용규', '박승철', '강호동', '김지은')
- 아이템 변경(수정, 삭제 등) 불가능
- 숫자, 문자(열), 논리형 등 모든 기본 데이터 같이 저장 가능
- 다른 컨테이너 자료형 데이터 저장 가능
students = ('강호동', '박찬호', '이용규', '박승철', '강호동', '김지은')
print(students)
print(type(students))
- 리스트와 마찬가지로
인덱스
를 활용하여 아이템 조회
students = ('강호동', '박찬호', '이용규', '박승철', '강호동', '김지은')
print(students)
print(students[0])
print(students[1])
print(students[2])
- 아이템 존재 유무 판단
아이템 in 튜플
: 튜플에 아이템이 있는 경우 True
아이템 not in 튜플
: 튜플에 아이템이 없는 경우 True
students = ('홍길동', '박찬호', '이용규', '박승철', '김지은')
searchName = input('학생 이름 입력 : ')
if searchName in students:
print('in - {} 학생은 존재합니다.'.format(searchName))
else:
print('in - {} 학생은 존재하지 않습니다.'.format(searchName))
print('='*35)
if searchName not in students:
print('not in - {} 학생은 존재하지 않습니다.'.format(searchName))
else:
print('not in - {} 학생은 존재합니다.'.format(searchName))
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))
print('2. {}'.format(students[2:4]))
print('3. {}'.format(students[2:5:2]))
students = ['홍길동', '박찬호', '이용규', '박승철', '김은지', '강호동']
students[1:4] = ('park chanho', 'lee yonggyu', 'park seungcheol')
print(students)
print(type(students))
students = ('홍길동', '박찬호', '이용규', '박승철', '김은지', '강호동')
print('1. {}'.format(students))
print('2. {}'.format(students[slice(2,4)]))
print('3. {}'.format(students[slice(2,5,2)]))
◾리스트와 튜플
- 리스트 : 아이템 추가, 변경, 삭제가 가능하다.
- 튜플 : 아이템 추가, 변경, 삭제가 불가능하다.
studnetList = ['홍길동', '박찬호', '이용규']
print(studnetList)
studnetList.append('강호동')
print(studnetList)
studnetList[2] = '유재석'
print(studnetList)
studnetList.pop()
print(studnetList)
studnetTuple = ('홍길동', '박찬호', '이용규')
print(studnetTuple)
- 튜플은 선언 시 괄호 생략이 가능하다.
- 리스트는 선언 시 괄호 생략이 불가능하다.
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)
students = ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은')
print(students)
newStudents = sorted(students, reverse=False)
print(newStudents)
newStudents = tuple(newStudents)
print(newStudents)
◾튜플 반복문
1. For 문
- for문을 이용해 튜플의 아이템을 참조할 수 있다.
cars = ('그랜저', '소나타', '말리부', '카니발', '쏘렌토')
for i in range(len(cars)):
print(cars[i])
for car in cars:
print(car)
for idx, car in enumerate(cars):
print(car)
2. While 문
- while문을 이용해 튜플의 아이템을 참조할 수 있다.
cars = ('그랜저', '소나타', '말리부', '카니발', '쏘렌토')
n = 0
while n < len(cars):
print(cars[n])
n += 1
n = 0
while True:
print(cars[n])
n += 1
if n == len(cars):
break