Python 강좌 / 리스트 만들고 항목 추가·수정·삭제하기
리스트는 순서가 있고 내용을 바꿀 수 있는 자료형입니다. 항목을 추가·수정·삭제할 수 있지만, 리스트를 정렬하는 메서드와 새 정렬 결과를 만드는 함수를 구분해야 합니다.
항목 접근과 수정 방법
리스트는 대괄호로 만들며 첫 인덱스는 0입니다. 인덱스로 한 항목을 바꾸거나 슬라이스로 일부를 복사할 수 있습니다. 같은 값이 여러 번 들어갈 수 있고, 숫자·문자열 등 서로 다른 자료형을 담을 수도 있지만 합계를 구할 데이터는 같은 의미와 단위로 맞추는 것이 좋습니다.
관련 동작과 지원 조건은 리스트 만들고 항목 추가·수정·삭제하기 관련 공식 문서에서 확인할 수 있습니다.
| 동작 | 코드 | 주의점 |
|---|---|---|
| 끝에 추가 | items.append(value) | 리스트 하나를 넣으면 중첩 항목이 됨 |
| 여러 항목 추가 | items.extend(values) | 반복 가능한 값의 항목을 차례로 추가 |
| 위치로 삭제 | items.pop(index) | 삭제한 값을 반환 |
| 값으로 삭제 | items.remove(value) | 첫 번째 일치만 삭제, 없으면 오류 |
전체 예제와 실행 결과
별도의 실습 폴더에서 아래 파일을 UTF-8로 저장합니다. 가상환경을 선택한 터미널에서 python lists.py 명령으로 실행합니다. macOS·Ubuntu에서 가상환경을 사용하지 않는 경우 명령 이름을 python3으로 바꿉니다.
lists.py 파일의 전체 내용입니다.
amounts = [3500, 8000, 2500] amounts.append(1000) amounts[0] = 4000 removed = amounts.pop() print(amounts, removed) print(sorted(amounts)) print(amounts) amounts.sort() print(amounts)
예상 결과는 다음과 같습니다.
[4000, 8000, 2500] 1000 [2500, 4000, 8000] [4000, 8000, 2500] [2500, 4000, 8000]
원본 정렬과 새 리스트 구분하기
sorted(amounts)는 새 리스트를 반환하므로 원본 순서는 그대로입니다. amounts.sort()는 원본을 바꾸고 반환값은 None입니다. amounts = amounts.sort()처럼 쓰면 리스트 대신 None을 저장하게 됩니다.
copy = amounts[:]는 바깥 리스트를 복사하는 얕은 복사입니다. 항목에 또 다른 리스트가 있으면 안쪽 객체까지 독립적으로 복제되지는 않습니다. 단순 대입 other = amounts는 복사조차 하지 않고 같은 리스트에 이름만 더 연결합니다.
빈 목록과 반복 중 변경 점검하기
빈 리스트의 0번째 항목을 읽거나 pop()을 호출하면 IndexError가 발생합니다. 항목이 있을 때만 처리할 조건을 넣거나 데이터가 반드시 있어야 하는 계약을 검증해야 합니다. remove는 없는 값에 ValueError를 발생시킵니다.
반복 중 같은 리스트에서 항목을 삭제하면 위치가 바뀌어 항목을 건너뛸 수 있습니다. 원본의 복사본을 돌거나 조건에 맞는 새 리스트를 만드는 방식이 더 명확합니다. amounts에 0을 하나 추가해 합계와 정렬이 어떻게 바뀌는지 확인한 뒤 원래 데이터로 되돌려 보세요.









