자료구조 (튜플)

Lee JunBok·2023년 5월 1일

자료구조

목록 보기
2/4
post-thumbnail

튜플(tuple)

리스트와 비슷하지만 아이템 변경이 불가하다.

()를 이용해 선언하고 데이터 구분은 ,를 사용한다.

students = ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은', '강호동')

print(students) # ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은', '강호동')
print(type(students)) # <class 'tuple'>

인덱스

튜플도 리스트와 마찬가지로 아이템에 자동으로 부여되는 번호표가 있다.

students = ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은', '강호동')

print(students[5]) # 김지은

in, not in

아이템의 존재유무를 알 수 있다.

in : 있으면 True 없으면 False
not in : 없으면 True 있으면 False

students = ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은', '강호동')

searchStudent = input('학생이름 입력 : ')

if searchStudent not in students:
    print('{}학생은 우리반이 아닙니다.'.format(searchStudent))
else:
    print('{}학생은 우리반이 맞습니다.'.format(searchStudent))
wrongWord = ('쩔었다', '짭새', '꼽사리', '먹튀', '지린', '쪼개다', '뒷담까다')
sentence = '짭새 등장에 강도들은 모두 쩔었다. 그리고 강도 들은 지린 듯 도망갔다.'

for word in wrongWord:
    if word in sentence:
        print('비속어 : {}'.format(word))
        
비속어 : 쩔었다
비속어 : 짭새
비속어 : 지린

len()

튜플에 저장된 아이템 개수를 튜플길이라고 한다.

len()과 반복문을 이용하면 튜플의 아이템 조회가 가능하다.

students = ('홍길동', '박찬호', '이용규', '박승철', '김지은', '강호동')

print(len(students))

for i in range(len(students)):
    print('i : {}'. format(i))
    print('students[{}] : {}'.format(i, students[i]))


n = 0
while n < len(students):
    print('n : {}'. format(n))
    print('students[{}] : {}'.format(n, students[n]))

    n += 1

튜플 결합

  • 연산자로만 결합할 수 있다.(수정이 불가하기 때문에 extend()함수를 사용할 수 없다.)
students1 = ('박승철', '김지은', '강호동')
students2 = ('홍길동', '박찬호', '이용규')

students3 = students1 + students2
print(students3) # ('박승철', '김지은', '강호동', '홍길동', '박찬호', '이용규')

튜플 슬라이싱

[n:m]를 이용해 리스트와 마찬가지로 슬라이싱 할 수 있다.

students = ('홍길동', '박찬호', '이용규', '박승철', '김지은', '강호동')

print(students[2:4]) # ('이용규', '박승철')
print(students[:4]) # ('홍길동', '박찬호', '이용규', '박승철')
print(students[2:-2]) # ('이용규', '박승철')

튜플은 슬라이싱을 이용해 아이템을 변경할 수 없다.

리스트에서 튜플 아이템으로는 변경 가능하다.(튜플을 추가하면 리스트로 된다.)

slice()함수를 이용하여 슬라이싱 할 수 있다.

리스트와 차이점

튜플은 리스트와 달리 아이템 추가, 변경, 삭제가 불가하다.

선언 시 괄호 생략이 가능하다.

리스트와 튜플은 자료형 변환이 가능하다

students = ['홍길동', '박찬호', '이용규', '박승철', '김지은', '강호동']

students = tuple(students)
print(students)
print(type(students))

students = list(students)
print(students)
print(type(students))

튜블 정렬

리스트로 자료형 변환 후 sort()를 이용해 변환한다.

sorted()함수를 이용하면 튜플도 정렬할 수 있다.(새로운 리스트 자료형을 반환한다.)

students = ('홍길동', '박찬호', '이용규', '박승철', '김지은', '강호동')

students1 = sorted(students)
print(students1) # ['강호동', '김지은', '박승철', '박찬호', '이용규', '홍길동']
print(type(students1)) # <class 'list'>

for문을 이용한 조회

리스트와 동일하다

최소학생 학급, 최대학생 학급 학생수 구하기

students = (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 students:
    if minCnt == 0 or minCnt > cnt:
        minClassNo = classNo
        minCnt = cnt

    if maxCnt < cnt:
        maxClassNo = classNo
        maxCnt = cnt

print(minClassNo, minCnt)
print(maxClassNo, maxCnt)

while문을 이용한 조회

리스트와 동일하다

cars = ('그랜져', '소나타', '말리부', '카니발', '쏘렌토')

n = 0
while n < len(cars):
    print(cars[n])
    n += 1


n = 0
flag = True
while flag:
    print(cars[n])
    n += 1

    if n == len(cars):
        flag = False


n = 0
while True:
    print(cars[n])
    n += 1

    if n == len(cars):
        break

이글은 제로베이스 데이터 취업스쿨의 강의자료 일부를 발췌하여 작성되었습니다.

profile
Learning Data Analyst

0개의 댓글