Day33. 자료구조 (6)

Junghwan Park·2023년 5월 22일
0

스터디노트

목록 보기
34/54

튜플 길이

  • 튜플 길이
  • 튜플의 아이템 개수를 확인하자!


    리스트와 마찬가지로, 튜플에 저장된 아이템 개수를 튜플 길이라고 한다.


    '홍길동' '박찬호' '이용규' '박승철' '김지은'
    ※※※ 튜플 길이 : 5 ※※※
students = ('홍길동', '박찬호', '이용규', '박승철', '김지은')
sLength = len(students)
print('students Length : {}'.format(sLength))
  • len()과 반복문을 이용하면 튜플의 아이템 조회가 가능하다.

for문을 이용한 방법

# for문을 이용한 방법
# for i in range(len(students)):
#     print('i : {}'.format(i))
#     print('students[{}] : {}'.format(i, students[i]))

while문을 이용한 방법

# while문을 이용한 방법
# n = 0
# while n < sLength:
#     print('n : {}'.format(n))
#     print('students[{}] : {}'.format(n, students[n]))
#     n += 1

또 다른 방법

# 또 다른 방법
# for s in students:
#     print('student : {}'.format(s))
  • 실습
    좋아하는 운동 종목을 튜플에 저장하고 반복문을 이용해서 출력해 보자.
myFavoriteSports = ('수영', '야구', '배구', '축구', '농구', '조깅')

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

for s in myFavoriteSports:
    print('myFavoriteSports : {}'.format(s))

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

튜플 결합

  • 튜플 결합
  • 두 개의 튜플을 합쳐서 새로운 튜플을 만들자!
# 두 개의 튜플을 결합할 수 있다!

# studentTuple1 = ('홍길동', '박찬호', '이용규')
# studentTuple2 = ('박승철', '김지은', '강호동')
#
# studentTuple3 = studentTuple1 + studentTuple2   # + 로 튜풀 합치기!
# print('studentTuple3 : {}'.format(studentTuple3))
  • 리스트에서 사용할 수 있는 extend()함수를 튜플에서는 사용할 수 없다.
studentList1 = ['홍길동', '박찬호', '이용규']
studentList2 = ['박승철', '김지은', '강호동']

studentList1.extend(studentList2)
print('studentList1: {}'.format(studentList1))

studentTuple1 = ('홍길동', '박찬호', '이용규')
studentTuple2 = ('박승철', '김지은', '강호동')
studentTuple1.extend(studentTuple2)
print('studentTuple1: {}'.format(studentTuple1))    # 튜플에서는 extend()를 사용할 수 없으므로 오류가 발생한다!
  • 실습
    튜플을 이용해서 나와 친구가 좋아하는 번호를 합치되 번호가 중복되지 않게 하는 프로그램을 만들자.
myFavoriteNumbers = (1, 3, 5, 6, 7)
friendFavoriteNumbers = (2, 3, 5, 8, 10)

print('myFavoriteNumbers : {}'.format(myFavoriteNumbers))
print('friendFavoriteNumbers : {}'.format(friendFavoriteNumbers))

# 합치는 부분
# result = myFavoriteNumbers + friendFavoriteNumbers
# print('result : {}'.format(result)) # 중복된 숫자가 그대로 출력된다!

# 중복이 없도록 합치기   (not in , in 사용!)
for number in friendFavoriteNumbers:
    if number not in myFavoriteNumbers:
        # myFavoriteNumbers + number  # 튜플 + 정수 이므로 더하기 할 수 없다! number를 (number, )로 바꾸면 튜플형이 된다!
        myFavoriteNumbers = myFavoriteNumbers + (number, )  # 튜플 + 튜플이므로 가능!

print('myFavoriteNumbers : {}'.format(myFavoriteNumbers))

튜플 슬라이싱

  • 튜플 슬라이싱
  • 원하는 아이템만 뽑아내자!


    리스트와 마찬가지로 [n:m]을 이용하면 리스트에서 원하는 아이템만 뽑아낼 수 있다.


    ('홍길동' '박찬호' '이용규' '강호동' '박승철' '김지은')
    슬라이싱 ← [2:4]
    2 <= n < 4 # 리스트와 마찬가지로 앞숫자 포함 뒷수자의 앞까지!
    '이용규' '강호동'
students = ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은')
print('students : {}'.format(students))
print('students[2:4] : {}'.format(students[2:4]))
print('students[:4] : {}'.format(students[:4]))    # 시작값 생략
print('students[2:] : {}'.format(students[2:]))    # 끝값 생략
print('students[2:-2] : {}'.format(students[2:-2]))    # 음수는 뒤에서 부터!
print('students[-5:-2] : {}'.format(students[-5:-2]))    # 음수는 뒤에서 부터!


numbers = (2, 50, 0.12, 1, 9, 7, 17)
print('numbers : {}'.format(numbers))
print('numbers[2:4] : {}'.format(numbers[2:4]))
print('numbers[:4] : {}'.format(numbers[:4]))    # 시작값 생략
print('numbers[2:] : {}'.format(numbers[2:]))    # 끝값 생략
print('numbers[2:-2] : {}'.format(numbers[2:-2]))    # 음수는 뒤에서 부터!
print('numbers[-5:-2] : {}'.format(numbers[-5:-2]))    # 음수는 뒤에서 부터!
  • 슬라이싱할 때 단계를 설정할 수 있다.
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]))
  • 튜플은 슬라이싱을 이용해서 아이템을 변경할 수 없다.
students = ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은')

students[1:4] = ('park chanho', 'lee yonggyu', 'gang hodong')
print('students : {}'.format(students)) # 오류가 발생한다!
  • 리스트에 튜플 아이템으로 변경 가능
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']

students[1:4] = ('park chanho', 'lee yonggyu', 'gang hodong')
print('students : {}'.format(students))
print(type(students))
  • slice()함수를 이용해서 아이템을 슬라이싱할 수 있다.
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print('students : {}'.format(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.append('강호동') 가능
    아이템 변경 students[3] = '유재석' 가능
    아이템 삭제 students.pop() 가능


    students = ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은')
    아이템 추가 students.append('강호동') 불가능
    아이템 변경 students[3] = '유재석' 불가능
    아이템 삭제 students.pop() 불가능
  • 튜플은 선언 시 괄호 생략이 가능하다.


    리스트
    students = ['홍길동', '박찬호', '이용규', '강호동']
    print(students)
    print(type(students))


    튜플
    students = ('홍길동', '박찬호', '이용규', '강호동')
    print(students)
    print(type(students))


    튜플
    students = '홍길동', '박찬호', '이용규', '강호동' # 괄호 생략!
    print(students)
    print(type(students))
  • 리스트와 튜플은 자료형 변환이 가능하다!


    students = ['홍길동', '박찬호', '이용규', '강호동']
    print(students)
    print(type(students))


    students = tuple(students) # 자료형 변환 가능!!
    print(students)
    print(type(students))


    students = list(students) # 자료형 변환 가능!!
    print(students)
    print(type(students))
students = ['홍길동', '박찬호', '이용규', '강호동']
print(students)
print(type(students))

students = tuple(students)  # 자료형 변환 가능!!   list → tuple
print(students)
print(type(students))


students = list(students)   # 자료형 변환 가능!!   tuple → list
print(students)
print(type(students))
  • 실습
    튜플을 이용한 점수표에서 최저, 최고 점수를 삭제한 후 총점과 평균을 출력해 보자.


    점수1 9.5
    점수2 8.9
    점수3 9.2
    점수4 9.8
    점수5 8.8
    점수6 9.0
playerScore = (9.5, 8.9, 9.2, 9.8, 8.8, 9.0)
print('playerScore : {}'.format(playerScore))
print('playerScore type : {}'.format(type(playerScore)))

playerScore = list(playerScore)   # 리스트로 자료형 변환 리스트가 되었으므로 sort할 수 있다!
print('playerScore type : {}'.format(type(playerScore)))

playerScore.sort()
print('playerScore : {}'.format(playerScore))

playerScore.pop(0)  # 최저 점수 삭제
playerScore.pop(len(playerScore) - 1)   # 최고 점수 삭제
print('playerScore : {}'.format(playerScore))

playerScore = tuple(playerScore)   # 다시 튜플로 변환!
print('playerScore type : {}'.format(type(playerScore)))

sum = 0 # 총점
avg = 0 # 평균

for s in playerScore:
    sum += s

avg = sum / len(playerScore)

print('총점 : {}'.format(sum))
print('평점 : {}'.format(avg))

print('총점 : %.2f' %sum)
print('평점 : %.2f' %avg)

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

profile
안녕하세요 반갑습니다^^

0개의 댓글