이번 편의 목표: 리스트의 추가·수정·삭제와 순회를 이해합니다.
지출 세 건을 `amount1`, `amount2`, `amount3`에 따로 담으면 네 번째 지출에서 변수를 또 만들어야 합니다. 리스트는 같은 목적의 여러 값을 순서대로 담는 자료구조입니다. 앞에서 사용한 대괄호 목록의 정체를 이번 편에서 정리하겠습니다.
순서가 있는 변경 가능한 목록
items = ["커피", "점심"]
items.append("교통")
items[0] = "차"
print(items)
print(items[1])
print(items[:2])
print(len(items))
removed = items.pop()
print(f"삭제한 항목: {removed}")
print("점심" in items)
for index, item in enumerate(items, start=1):
print(f"{index}. {item}")
amounts = [4500, 8000, 3200]
print(sum(amounts))
print(min(amounts))
print(max(amounts))처음 목록은 `['차', '점심', '교통']`입니다. `append()`는 끝에 하나를 추가하고, `items[0] = ...`은 지정한 위치의 값을 바꿉니다. 문자열과 달리 리스트는 요소를 직접 바꿀 수 있습니다.
`pop()`은 기본적으로 마지막 요소를 삭제하면서 그 값을 반환합니다. 따라서 `removed`는 `교통`입니다. `remove("점심")`은 값이 같은 첫 요소를 삭제하는 별도 기능입니다. 없는 값을 `remove()`로 지우면 `ValueError`, 빈 목록에서 `pop()`을 호출하면 `IndexError`가 발생합니다.
번호와 값이 함께 필요할 때
`enumerate()`는 번호와 값을 함께 꺼내 줍니다. `start=1`은 화면에 보여 줄 번호를 1부터 시작하게 합니다. 리스트 자체의 인덱스는 여전히 0부터입니다. 사람에게 보여 주는 번호와 내부 위치는 구별해야 합니다.
`in`은 목록에 값이 들어 있는지 확인합니다. `sum()`, `min()`, `max()`는 숫자 목록의 합·최솟값·최댓값을 구하는 데 유용합니다. 빈 리스트의 `sum()`은 0이지만 `min()`과 `max()`는 기본값을 지정하지 않으면 오류가 납니다. 평균도 빈 목록에서는 0으로 나눌 수 있으니 건수 확인이 필요합니다.
두 가지 함정
`append()`나 `sort()` 같은 리스트 변경 메서드는 보통 바뀐 리스트를 반환하지 않고 `None`을 반환합니다. `items = items.append("문구")`라고 쓰면 원래 목록에 항목은 추가되지만, `items`라는 이름은 `None`을 가리키게 됩니다. 변경은 `items.append("문구")` 한 줄로 수행하세요.
또한 목록을 순회하면서 같은 목록의 요소를 삭제하면 항목이 건너뛰어질 수 있습니다. 조건에 맞는 항목만 담은 새 목록을 만드는 방법이 더 분명합니다. 이 방법은 12편에서 배웁니다. 목록의 별칭과 복사 문제는 14편에서 별도로 확인합니다.
직접 해 보기
`[1000, 2000]`에 `3000`을 추가하고, 두 번째 값을 `2500`으로 바꾼 뒤 합계를 출력하세요. 마지막 값을 꺼내서 별도로 출력하세요.
해설
amounts = [1000, 2000]
amounts.append(3000)
amounts[1] = 2500
print(sum(amounts))
last = amounts.pop()
print(last)
print(amounts)합계는 `6500`, 꺼낸 값은 `3000`, 남은 목록은 `[1000, 2500]`입니다. 수정 전후에 목록 전체를 출력하면 상태 변화를 확인하기 쉽습니다.
COMMENTS
댓글 0
이 글에 대한 의견이나 질문을 남겨 주세요.
등록된 댓글이 없습니다.