Day30. 자료구조 (3)

Junghwan Park·2023년 5월 18일
0

스터디노트

목록 보기
31/54

리스트에 아이템 추가

  • 리스트에 아이템 추가

리스트에 아이템을 추가하자!


append() 함수를 이용하면 마지막 인덱스에 아이템을 추가할 수 있다.


'홍길동' '박찬호' '이용규' '박승철' '김지은' '강호동'


마지막 인덱스에 아이템 추가 ← append() ← '강호동'
'''

  • append() 함수를 이용하면 마지막 인덱스에 아이템을 추가할 수 있다.
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))
print('students의 마지막 인덱스 : {}'.format(len(students) - 1))   # 인덱스는 0부터 시작하므로

students.append('강호동')
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))
print('students의 마지막 인덱스 : {}'.format(len(students) - 1))
  • append() 함수를 이용하면 마지막 인덱스에 아이템을 추가할 수 있다.
scores = [['국어', 88],
          ['영어', 91],]

print('scores : {}'.format(scores))
print('scores length : {}'.format(len(scores)))
print('last index : {}'.format(len(scores) -1))

scores.append(['수학', 96])
print('scores : {}'.format(scores))
print('scores length : {}'.format(len(scores)))
print('last index : {}'.format(len(scores) -1))

for subject, score in scores:
    print('과목 : {}, 점수 : {}'.format(subject, score))
  • 실습
    가족 구성원의 나이가 아래와 같을 때 새로 태어난 동생을 리스트에 추가해보자.


    아빠 엄마 나
    40 38 9
myFamilyAge = [['아빠', 40],
               ['엄마', 38],
               ['나', 9]]

print(myFamilyAge)

myFamilyAge.append(['동생', 1])
print(myFamilyAge)

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

리스트의 특정 위치에 아이템 추가

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

insert() 함수를 이용하면 특정 위치(인덱스)에 아이템을 추가할 수 있다.


'홍길동' '박찬호' '이용규' '강호동' '박승철' '김지은'

insert() 인덱스 3에 아이템 추가!


append는 리스트의 맨 뒤로
insert는 특정 위치에!

students = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))
print('students의 마지막 인덱스 : {}'.format(len(students) - 1))   # 인덱스는 0부터 시작하므로


students.insert(3, '강호동')   # 리스트의 3번째 자리에 '강호동'을 추가!
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))
print('students의 마지막 인덱스 : {}'.format(len(students) - 1))   # 인덱스는 0부터 시작하므로
  • insert() 함수를 이용해서 특정 위치에 아이템을 추가할 수 있다!
words = ['I', 'a', 'boy.']

for word in words:
    print(word, end = '')

words.insert(1, 'am')
for word in words:
    print('{} '.format(word), end = '')
  • 실습
    오름차순으로 정렬되어 있는 숫자들에 사용자가 입력한 정수를 추가하는 프로그램을 만들어보자.
    (단, 추가 후에도 오름차순 정렬이 유지되어야 한다.)
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 == 0 이여야 최초 한번만 실행 된다!
        insertIdx = idx

numbers.insert(insertIdx, inputNumber)
print('numbers : {}'.format(numbers))

리스트의 아이템 삭제

  • 마지막 인덱스 아이템 삭제

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




'홍길동' '박찬호' '이용규' '박승철' '김지은' '강호동'

마지막 인덱스 아이템 삭제 ← pop()

'강호동'

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


    '홍길동' '박찬호' '이용규' '강호동''박승철' '김지은'

    3 인덱스 아이템 삭제 ← pop(3)

    '강호동'

pop() 연습

# pop() 연습
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은', '강호동']
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))

students.pop()
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))    # 마지막 데이터인 '강호동' 삭제

pop(n) 연습

# pop(n) 연습
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은', '강호동']
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))

students.pop(3)
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))    # 3번째 인덱스인 '박승철'을 삭제!

pop()로 지운 데이터를 변수에 넣어 활용!

# pop()로 지운 데이터를 변수에 넣어 활용!
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은', '강호동']
print('students : {}'.format(students))
print('students의 길이 : {}'.format(len(students)))

rValue = students.pop()
print('rValue: {}'.format(rValue))

rValue = students.pop(3)
print('rValue: {}'.format(rValue))
  • 실습
    다음은 어떤 체조 선수의 점수표이다. 점수표에서 최저, 최고 점수를
    점수1 9.5
    점수2 8.9
    점수3 9.2
    점수4 9.8
    점수5 8.8
    점수6 9.0
playerScores = [9.5, 8.9, 9.2, 9.8, 8.8, 9.0]
print('playerScores : {}'.format(playerScores))

minScore = 0
maxScore = 0
minScoreIdx = 0
maxScoreIdx = 0

for idx, score in enumerate(playerScores):
    if idx == 0 or minScore > score:    # idx 0 일때는 idx는0 minsocre는 리스트 가장 첫값
        minScoreIdx = idx
        minScore = score    # 최저값 구하기

print('minScore : {}, minScoreIdx : {}'.format(minScore, minScoreIdx))
playerScores.pop(minScoreIdx)   # 최저, 최고 점수를 삭제 해주는 부분

for idx, score in enumerate(playerScores):
    if maxScore < score:
        maxScoreIdx = idx
        maxScore = score

print('maxScore : {}, maxScoreIdx : {}'.format(maxScore, maxScoreIdx))
playerScores.pop(minScoreIdx)   # 최저, 최고 점수를 삭제 해주는 부분

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

리스트의 특정 아이템 삭제

  • 리스트의 특정 아이템 삭제

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


'홍길동' '박찬호' '이용규' '강호동''박승철' '김지은'

특정 아이템 삭제 ← remove()

'강호동'

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

students.remove('박찬호')  # 리스트에서 '박찬호'가 삭제 된다!
print(students)
  • remove()는 한 개의 아이템만 삭제 가능하다. 만약 삭제하려는 데이터가 2개 이상이라면 while문을 이용하자.


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

students.remove('강호동')  # 앞쪽의 '강호동'만 삭제 된다!
print(students)

# while을 사용해서 '강호동' 모두 지우기!

while '강호동' in students:    # students안에 '강호동'이라는 데이터가 있으면 True라는 뜻!
    students.remove('강호동')  # 모두 지워지면 while문이 False가 되면서 멈춘다!

print(students)
  • 실습1
    아래의 오늘 일정표에서 사용자가 입력한 일정을 삭제하는 프로그램을 만들어보자.


    마케팅 회의
    회의록 정리
    점심 약속
    월간 업무 보고
    치과 방문
    마트 장보기
myList = ['마케팅 회의', '회의록 정리', '점심 약속', '월간 업무 보고', '치과 방문', '마트 장보기']
print('일정 : {}'.format(myList))

removeItem = input('삭제 대상 입력 : ')
myList.remove(removeItem)
print('일정 : {}'.format(myList))
  • 실습2
    아래 시험 과목표에서 사용자가 입력한 과목을 삭제하는 프로그램을 만들어보자.
    국어 영어 수학 과학 국사
subjects = ['국어', '영어', '수학', '과학', '국사']
print('시험 과목표 : {}'.format(subjects))

removeSubject = input('삭제 과목명 입력 : ')
while removeSubject in subjects:
    subjects.remove(removeSubject)

print('시험 과목표 : {}'.format(subjects))

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

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

0개의 댓글