17.자료구조와 알고리즘-2

SOWA·2023년 3월 20일

🖇️ 튜플(Tuple)

리스트와 비슷하지만 아이템 변경(수정,삭제) 불가능
()를 이용해서 선언하고 데이터 구분은','를 사용

  • 숫자,문자(열),논리형 등 모든 기본 데이터를 같이 저장 가능

    students = ('홍길동', '박찬호', '이용규', '박승철', '김지은')
    numbers = (10, 20, 30, 40, 50)
    str = (3.14, '십', 20, 'one', '3.141592')
  • 튜플에 또 다른 컨테이너 자료형 데이터 저장가능

    data = (10, 20, 30, (40, 50, 60))

─튜플 아이템 조회

  • 튜플도 리스트와 마찬가지로 아이템에 자동으로 부여되는 인덱스(번호표)가 존재


─in, not in

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

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

searchName = input('학생이름 입력: ')
if searchName in studentsTuple:
    print(f'{searchName} 학생은 우리반 학생입니다.')

else:
    print(f'{searchName} 학생은 우리반 학생이 아닙니다.')

학생이름 입력: 김지은
김지은 학생은 우리반 학생입니다.

학생이름 입력: 김누구
김누구 학생은 우리반 학생이 아닙니다.

문자열에서도 사용 가능

##문장에 비속어가 있는지 알아내는 프로그램
wrongWord = ['쫄았다', '짭새', '꼽사리', '먹튀', '지린', '쪼개다', '뒷담 까다']
sentence = '짭새 등장에 강도들은 모두 쫄았다. 그리고 강도들은 지린 듯 도망갔다.'

for word in wrongWord:
    if word in sentence:
        print(f'비속어: {word}')

비속어: 쫄았다
비속어: 짭새
비속어: 지린


─튜플 길이

리스트와 마찬가지로 튜플에 저장된 아이템 개수를 뜻함

  • len()과 반복문으로 튜플 아이템 조회 가능

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

for i in range(len(students)):
    print(f'i: {i}')
    print(f'students[{i}]: {students[i]}')

i: 0
students[0]: 홍길동
i: 1
students[1]: 박찬호
i: 2
students[2]: 이용규
i: 3
students[3]: 박승철
i: 4
students[4]: 김지은

─튜플 결합

  • 두개의 튜플 결합 가능
  • 리스트에서 사용할 수 있는 extend()함수를 튜플에서는 사용 불가능

─튜플 슬라이싱

  • 리스트와 마찬가지로[n:m]을 이용하면 리스트에서 원하는 아이템만 추출 가능

n<= [n:m] <m
  • 슬라이싱할 때 단계 설정 가능

numbers = (2, 50, 0.12, 1, 9, 7, 17, 35, 100, 3.14)
print('numbers: {}'.format(numbers[2:-2]))  ##세번쨰 숫자부터 맨 끝에서 세번째 숫자까지
print('numbers: {}'.format(numbers[2:-2:2]))  ## 마지막 숫자는 '단계'
print('numbers: {}'.format(numbers[:-2:2])) ##앞 쪽 숫자 생략(맨 처음부터)
print('numbers: {}'.format(numbers[::2])) ##시작,끝 생략가능(리스트내 숫자) 전부 다 사용)

numbers: (0.12, 1, 9, 7, 17, 35)
numbers: (0.12, 9, 17)
numbers: (2, 0.12, 9, 17)
numbers: (2, 0.12, 9, 17, 100)
  • 튜플은 슬라이싱을 이용해서 아이템 변경 불가

  • 리스트에 튜플 아이템으로 변경 가능(결과 타입은 리스트)
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은']

students[1:4] = ('park chan-ho', 'lee young-gyu', 'kang ho-dong')
print('students: {}'.format(students))
print(type(students))

students: ['홍길동', 'park chan-ho', 'lee young-gyu', 'kang ho-dong', '김지은']
<class 'list'>

  • slice()

    아이템 슬라이싱 가능
students = ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은')
print('students: {}'.format(students[slice(2, 4)]))
print('students: {}'.format(students[slice(4)]))
print('students: {}'.format(students[slice(2, len(students))]))
print('students: {}'.format(students[slice(2, len(students)-2)]))
print('students: {}'.format(students[slice(len(students)-5, len(students)-2)]))

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


─리스트와 튜플

  • 튜플은 리스트와 달리 아이템 추가,변경,삭제 불가능

  • 튜플은 선언시 괄호 생략 가능

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

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

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

  • 리스트와 튜플은 자료형 변환이 가능
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
print(students)
print(type(students))

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

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

['홍길동', '박찬호', '이용규', '박승철', '김지은']
<class 'list'>
('홍길동', '박찬호', '이용규', '박승철', '김지은')
<class 'tuple'>
['홍길동', '박찬호', '이용규', '박승철', '김지은']
<class 'list'>

from.제로베이스 데이터 취업스쿨 강의

0개의 댓글