제로베이스 데이터 취업 파트타임/100일 챌린지_일일 학습 일지

제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.21]

김뚱입니다 2025. 4. 21. 20:06

[강의 요약]

[Part 03. 자료구조&알고리즘 with Python_ Ch 01. 자료구조] 강의 수강

10_리스트에 아이템 추가부터 13_리스트의 특정 아이템 삭제까지 강의 수강하였음

🐢 100일 챌린지 🔥 : [▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰                                        ] 36/100일 (36%)

혼자 공부하면 고독하다.

밈 보면서 희희 거리고 다시 달리는 수밖에~

OIIAOIIA~

 

 

 

 

[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일반 강의 자료 일부를 발췌하여 작성되었습니다.”