제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.21]
[강의 요약]
[Part 03. 자료구조&알고리즘 with Python_ Ch 01. 자료구조] 강의 수강
10_리스트에 아이템 추가부터 13_리스트의 특정 아이템 삭제까지 강의 수강하였음
🐢 100일 챌린지 🔥 : [▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰ ] 36/100일 (36%)
혼자 공부하면 고독하다.
밈 보면서 희희 거리고 다시 달리는 수밖에~
[10_리스트에 아이템 추가]
▶ append() 함수란?
리시트의 기본 메서드임
리스트의 가장 마지막 위치에 데이터를 추가할 수 있는 메서드
리스트.append(추가할_값)
리스트는 순서가 있는 구조이므로 새로운 값은 항상 맨 뒤에 추가된다.
▶ 코드 : 학생 리스트에 이름 추가
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))
print('students의 마지막 인덱스 : {}'.format(len(students) - 1))
students.append('강호동')
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))
print('students의 마지막 인덱스 : {}'.format(len(students) - 1))
[출력 결과]
students : ['홍길동', '박찬호', '이용규', '박승철', '김지은']
students의 길이 : 5
students의 마지막 인덱스 : 4
students : ['홍길동', '박찬호', '이용규', '박승철', '김지은', '강호동']
students의 길이 : 6
students의 마지막 인덱스 : 5
▶ 코드 : 점수 리스트에 과목 추가
scores = [['국어', 88], ['영어', 91]]
scores.append(['수학', 96])
print('scores : {}'.format(scores))
for subject, score in scores:
print('과목: {} \t 점수: {}'.format(subject, score))
[출력 결과]
scores : [['국어', 88], ['영어', 91], ['수학', 96]]
과목: 국어 점수: 88
과목: 영어 점수: 91
과목: 수학 점수: 96
▶ 실습 코드 : 가족 나이 리스트에 동생 추가
myFamilyAge = [['아빠', 40], ['엄마', 38], ['나', 9]]
myFamilyAge.append(['동생', 1])
for name, age in myFamilyAge:
print('{}의 나이: {}'.format(name, age))
[출력 결과]
아빠의 나이: 40
엄마의 나이: 38
나의 나이: 9
동생의 나이: 1
[11_리스트의 특정 위치에 아이템 추가]
▶ insert() 함수란?
리스트의 지정한 인덱스 위치에 새 데이터를 삽입하는 메서드
특정 인덱스에 아이템을 추가할 때 사용함
리스트.insert(인덱스, 값)
기존에 있던 요소는 오른쪽으로 밀려남
정렬 유지나 중간 삽입시 유용함
▶ 코드 : 학생 리스트 중간에 이름 삽입
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))
print('students의 마지막 인덱스 : {}'.format(len(students) - 1))
students.insert(3, '강호동')
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))
print('students의 마지막 인덱스 : {}'.format(len(students) - 1))
[출력 결과]
students : ['홍길동', '박찬호', '이용규', '박승철', '김지은']
students의 길이 : 5
students의 마지막 인덱스 : 4
students : ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
students의 길이 : 6
students의 마지막 인덱스 : 5
▶ 코드 : 문장 사이에 단어 삽입
words = ['I', 'a', 'boy.']
words.insert(1, 'am')
for word in words:
print('{} '.format(word), end='')
[출력 결과]
I am a boy.
▶ 실습 코드 : 오름차순 정렬 유지하며 숫자 삽입
numbers = [1, 3, 6, 11, 45, 54, 62, 74, 85]
inputNumber = int(input('숫자 입력: '))
insertIdx = 0
for idx, number in enumerate(numbers):
print(idx, number)
if insertIdx == 0 and inputNumber < number:
insertIdx = idx
numbers.insert(insertIdx, inputNumber)
print(numbers)
[입력 / 출력]
숫자 입력: 10
0 1
1 3
2 6
3 11
...
[1, 3, 6, 10, 11, 45, 54, 62, 74, 85]
조건에 맞는 위치에만 한 번 삽입되도록 insertIdx == 0 조건을 사용함
삽입 후에도 리스트는 오름차순 정렬 유지
[12_리스트의 아이템 삭제]
▶ pop() 함수란?
리스트에서 항목을 삭제하고, 삭제한 항목을 반환(return) 해주는 메서드
마지막 항목뿐 아니라 특정 인덱스의 항목도 제거할 수 있음
리스트.pop() # 마지막 항목 삭제
리스트.pop(인덱스) # 지정한 인덱스 항목 삭제
▶ 코드 : 마지막 아이템 삭제
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은', '강호동']
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))
rValue = students.pop()
print('return value: {}'.format(rValue))
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))
[출력 결과]
students : ['홍길동', '박찬호', '이용규', '박승철', '김지은', '강호동']
students의 길이 : 6
return value: 강호동
students : ['홍길동', '박찬호', '이용규', '박승철', '김지은']
students의 길이 : 5
▶ 코드 : 특정 위치(인덱스)의 아이템 삭제
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))
rValue = students.pop(3)
print('return value: {}'.format(rValue))
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))
[출력 결과]
students : ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
students의 길이 : 6
return value: 강호동
students : ['홍길동', '박찬호', '이용규', '박승철', '김지은']
students의 길이 : 5
▶ 실습 코드 : 최고점과 최저점 삭제 (선수 점수)
playerScore = [9.5, 8.9, 9.2, 9.8, 8.8, 9.0]
print('playerScore : {}'.format(playerScore))
minScore = 0
maxScore = 0
minScoreIdx = 0
maxScoreIdx = 0
# 최저점 탐색
for idx, score in enumerate(playerScore):
if idx == 0 or minScore > score:
minScoreIdx = idx
minScore = score
print('minScore:{}, minScoreIdx : {}'.format(minScore, minScoreIdx))
playerScore.pop(minScoreIdx)
print('playerScore : {}'.format(playerScore))
# 최고점 탐색
for idx, score in enumerate(playerScore):
if maxScore < score:
maxScoreIdx = idx
maxScore = score
print('maxScore:{}, maxScoreIdx : {}'.format(maxScore, maxScoreIdx))
playerScore.pop(maxScoreIdx)
print('playerScore : {}'.format(playerScore))
[출력 결과]
playerScore : [9.5, 8.9, 9.2, 9.8, 8.8, 9.0]
minScore:8.8, minScoreIdx : 4
playerScore : [9.5, 8.9, 9.2, 9.8, 9.0]
maxScore:9.8, maxScoreIdx : 3
playerScore : [9.5, 8.9, 9.2, 9.0]
[13_리스트의 특정 아이템 삭제]
▶ remove() 함수란?
리스트에서 첫 번째로 일치하는 값 하나만 삭제하는 함수
리스트.remove(값)
존재하지 않는 값을 삭제하려 하면 ValueError 발생함
동일한 값이 여러 번 있는 경우는 어떻게? → while 문으로 반복 삭제 가능
▶ 코드 : 값 하나 삭제
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))
students.remove('강호동')
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))
[출력 결과]
students : ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
students의 길이 : 6
students : ['홍길동', '박찬호', '이용규', '박승철', '김지은']
students의 길이 : 5
▶ 코드 : 같은 값 여러 번 삭제 (while문)
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은', '강호동']
print(students)
while '강호동' in students:
students.remove('강호동')
print(students)
[출력 결과]
['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은', '강호동']
['홍길동', '박찬호', '이용규', '박승철', '김지은']
▶ 실습 코드 : 일정에서 항목 삭제 (사용자 입력 기반)
myList = ['마케팅 회의', '회의록 정리', '점심 약속', '월간 업무 보고', '치과 방문', '마트 장보기']
print('일정 : {}'.format(myList))
removeItem = input('삭제 대상 입력: ')
myList.remove(removeItem)
print('일정 : {}'.format(myList))
[입력 / 출력]
삭제 대상 입력: 치과 방문
일정 : ['마케팅 회의', '회의록 정리', '점심 약속', '월간 업무 보고', '마트 장보기']
▶ 실습 코드 : 시험 과목표에서 항목 반복 삭제
subjects = ['국어', '영어', '수학', '과학', '국사']
print('시험 과목표 : {}'.format(subjects))
removeSubject = input('삭제 과목명 입력: ')
while removeSubject in subjects:
subjects.remove(removeSubject)
print('시험 과목표 : {}'.format(subjects))
[입력 / 출력]
삭제 과목명 입력: 수학
시험 과목표 : ['국어', '영어', '과학', '국사']
[나의 생각 정리]
파이썬에서 리스트를 활용할 수 있는 여러 함수 사용 방법을 정리했다.
appen() 함수를 제일 많이 사용해 봤고 나머지는 soso..?
잘 사용하지 않았는데 이유는 유연하게 사용하는 법을 몰라서임 ㅎㅎ;
이제 알았으니까 다른 함수들을 사용해서 풀어야 하는 백준 문제들에 헤딩을! 하면 된다!
[적용점]
위에서 말한 대로 백준 문제 푸는데 유용하게 사용할 것 같다.
주말에 응시하는 자격증에서도 데이터 EDA 해서 뚜따뚜따 해야 하는데 필요할지도?
“이 글은 제로베이스 데이터 스쿨 주 3일반 강의 자료 일부를 발췌하여 작성되었습니다.”