[3주차3일차] Chapter 04_자료구조/알고리즘 자료구조3

HA_·2023년 10월 23일
0

리스트에 아이템 추가

아이템 추가하기

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))
scores = [['국어', 88], ['영어', 91]]
scores.append(['수학', 96])

print('scores : {}' .format(scores))
for subject, scores in scores:
    print('과목: {} \t 점수: {}' .format(subject, scores))

실습

가족 구성원의 나이가 아래와 같을 때 새로 태어난 동생을 리스트에 추가해보자.

myFamilyAge = [['아빠', 40], ['엄마', 38], ['나', 9]]
myFamilyAge.append(['동생', 1])

for name, age in myFamilyAge:
    print('{}의 나이: {}' .format(name, age))

특정 위치에 아이템 추가

특정 위치에 아이템 추가하기

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: {}' .format(numbers))

출력값:
숫자 입력: 55
[1, 3, 6, 11, 45, 54, 55, 62, 74, 85]

리스트의 아이템 삭제

마지막 인덱스 아이템 삭제

pop() 함수를 이용하면 마지막 인덱스에 해당하는 아이템을 삭제할 수 있다.

pop(n) 함수를 n인덱스에 해당하는 아이템을 삭제할 수 있다.

실습

playerScores = [9.5, 8.9, 9.2, 9.8, 8.8, 9.0]
print('playerScores: {}' .format(playerScores))

minScore = 0; maxScoore = 0
minScoreIdx = 0; maxScooreIdx = 0

for idx, score in enumerate(playerScores):
    if idx == 0 or minScore > score:
        minScoreIdx = idx
        minScore = score

print('minScore: {}, minScoreIdx: {}' .format(minScore, minScoreIdx))
playerScores.pop(minScoreIdx)

for idx, score in enumerate(playerScores):
    if idx == 0 or maxScoore < score:
        maxScooreIdx = idx
        maxScoore = score

print('maxScore: {}, maxScoreIdx: {}' .format(maxScoore, maxScooreIdx))
playerScores.pop(maxScooreIdx)


print('playerScores: {}' .format(playerScores))
#출력값:
playerScores: [9.5, 8.9, 9.2, 9.8, 8.8, 9.0]
minScore: 8.8, minScoreIdx: 4
maxScore: 9.8, maxScoreIdx: 3
playerScores: [9.5, 8.9, 9.2, 9.0]

리스트의 특정 아이템 삭제

특정 아이템 삭제

remove() 함수를 이용하면 특정 아이템을 삭제할 수 있다.

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

students.remove('박찬호')
print(students)
#출력값:
['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은', '강호동']
['홍길동', '이용규', '강호동', '박승철', '김지은', '강호동']

마지막 인덱스 아이템 삭제

remove()는 한 개의 아이템만 삭제 가능하다. (두 개 중 앞에 있는 아이템이 삭제됨.) 만약 삭제하려는 데이터가 2개 이상이라면 while문을 이용하자.

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

while '강호동' in students:
    students.remove('강호동')
    
print(students)
#출력값:
['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은', '강호동']
['홍길동', '박찬호', '이용규', '박승철', '김지은']

0개의 댓글