
파이썬(Python)에서 리스트(list)는 데이터 분석, 자동화, 웹 스크립트 등 다양한 작업에서 가장 많이 사용되는 자료 구조입니다. 초보자가 가장 자주 겪는 문제 중 하나는 “리스트를 다른 변수에 저장했는데 왜 같이 변경될까?” 하는 얕은 복사(shallow copy) 문제입니다.
본 글에서는 리스트 복사 방법, index·count 같은 탐색 기능, append·reverse 같은 수정 기능까지 실전 예제 중심으로 정리합니다.
파이썬(Python)에서 리스트(list)는 데이터 분석, 머신러닝, 웹 스크립트 등 다양한 작업에서 가장 많이 사용되는 자료 구조입니다. 특히 초보자가 자주 어려워하는 개념이 리스트 복사와 수정 시 원본에 영향을 주는 문제입니다.
본 글에서는 리스트의 기본 개념부터, 얕은 복사, index·count 활용, append·reverse 사용법까지 실전 중심으로 정리합니다.
1. 리스트(List)란 무엇인가?
리스트는 파이썬에서 여러 값을 하나의 변수 안에 순서 있게 저장할 수 있는 자료 구조입니다.
예를 들어, 방의 면적을 각각 따로 변수에 저장하면 비효율적이지만, 리스트를 사용하면 한 번에 묶어서 관리할 수 있습니다.
리스트의 주요 특징은 다음과 같습니다.
- 순서가 있다(Ordered)
저장된 요소는 인덱스(0부터 시작)를 통해 접근할 수 있습니다. - 변경 가능하다(Mutable)
값 변경, 삽입, 삭제가 자유롭게 가능합니다. - 다양한 자료형을 함께 저장할 수 있다
숫자, 문자열, 다른 리스트까지 모두 한 리스트 안에 포함할 수 있습니다.
areas = [11.25, 18.0, 20.0, 10.75, 9.50]
2. 리스트를 다른 변수에 저장할 때 원본에 영향을 주지 않게 만드는 방법
리스트는 mutable이기 때문에 단순히 변수에 다시 대입하면 두 변수가 같은 리스트를 공유하게 됩니다.
areas_copy = areas # 같은 리스트를 가리키는 alias 생성
이 코드는 새로운 리스트를 만드는 것이 아니라, 같은 리스트 객체를 두 변수가 함께 가리키도록(aliasing) 만듭니다. 따라서 하나를 수정하면 다른 하나도 바뀌는 문제가 발생합니다.
이를 해결하는 가장 간단한 방식은 슬라이싱을 이용한 얕은 복사(shallow copy) 입니다.
이 상태에서 변경하면 원본까지 함께 바뀝니다. 이를 피하려면 리스트의 얕은 복사(shallow copy) 를 사용해야 합니다.
# Create list areas
areas = [11.25, 18.0, 20.0, 10.75, 9.50]
# Shallow copy using slicing
areas_copy = areas[:] # 완전히 새로운 리스트 생성
# Modify the copy
areas_copy[0] = 5.0
# Print original
print(areas) # 원본은 유지됩니다.
슬라이싱을 사용하면 새로운 객체가 생성되어 원본과 독립적으로 작동합니다.
3. 리스트에서 값의 위치 찾기: index(), count()
값을 찾아야 할 때 사용하는 기본 함수입니다.
areas = [11.25, 18.0, 20.0, 10.75, 9.50]
print(areas.index(20.0)) # 20.0이 처음 나타나는 인덱스
print(areas.count(9.50)) # 9.50 등장 횟수
- index(value) → 값이 나타나는 첫 번째 위치
- count(value) → 값이 몇 번 등장했는지 반환
데이터 분석에서 특정 값의 위치, 등장 빈도 파악에 매우 유용합니다.
4. 리스트 요소 추가하기와 순서 뒤집기: append(), reverse()
areas = [11.25, 18.0, 20.0, 10.75, 9.50]
# Add new areas
areas.append(24.5)
areas.append(15.45)
print(areas)
# Reverse the list order
areas.reverse()
print(areas)
- append() → 리스트 끝에 요소 추가
- reverse() → 요소 순서를 역순으로 정렬
데이터 가공 과정에서 자주 사용되는 기본 기능입니다.
결론
리스트는 파이썬에서 가장 기본이면서도 강력한 자료 구조입니다. 순서·변경 가능·다양한 타입 저장 등 유연한 특성을 가지고 있어 데이터 처리, 분석, 자동화 프로젝트에서 필수적으로 사용됩니다.
본 글에서 소개한 리스트 복사 방식, index/count 활용법, append/reverse 메서드는 실무와 학습 모두에서 자주 등장하므로 반드시 숙지하시기 바랍니다.
'Programming' 카테고리의 다른 글
| Matplotlib 완전 정리: 기본 리스트/딕셔너리로 배우는 Line Plot · Scatter Plot · Histogram (0) | 2025.12.08 |
|---|---|
| NumPy 완전 정리: ndarray 생성부터 reshape, axis, 벡터와 행렬 연산까지 한 번에 배우기 (0) | 2025.12.08 |
| 파이썬 판다스(Pandas) 완전 정리: DataFrame 생성부터 인덱싱·정렬·그룹화·결측치 처리까지 한 번에 배우기 (0) | 2025.12.08 |
| 파이썬 논리연산자 AND·OR·NOT 완전 정리 + NumPy 논리 연산 활용법 (1) | 2025.12.08 |
| 파이썬 딕셔너리(Dictionary) 완전 정리: 기본 개념부터 추가·수정·삭제·중첩 딕셔너리까지 (0) | 2025.12.08 |