파이썬 리스트 한방 정리! 실용적인 활용법 총정리

파이썬을 배우면서 가장 많이 사용하는 자료형 중 하나가 리스트(list)입니다. 리스트는 데이터를 순서대로 저장할 수 있는 유용한 컬렉션 타입으로, 다양한 조작 방법이 존재합니다. 오늘은 파이썬 리스트의 기본 개념부터 활용법까지 한눈에 정리해보겠습니다.
1. 리스트 생성 및 기본 사용법

파이썬에서 리스트는 대괄호 []를 사용해 생성합니다. 리스트 안에는 숫자, 문자열, 불리언 등 다양한 타입의 데이터를 포함할 수 있습니다.
# 빈 리스트 생성
my_list = []
# 숫자로 이루어진 리스트
numbers = [1, 2, 3, 4, 5]
# 문자열 리스트
words = ["apple", "banana", "cherry"]
# 혼합 리스트
mixed = [1, "hello", 3.14, True]
리스트의 요소 개수를 알고 싶다면 `len()`을 사용하면 됩니다.
```python
print(len(numbers)) # 출력: 5
2. 리스트 인덱싱과 슬라이싱

리스트의 특정 요소를 가져오려면 인덱싱을, 여러 개의 요소를 가져오려면 슬라이싱을 사용합니다.
# 리스트 인덱싱 (0부터 시작)
print(numbers[0]) # 1
print(numbers[-1]) # 5 (마지막 요소)
# 리스트 슬라이싱
print(numbers[1:4]) # [2, 3, 4] (1번 인덱스부터 4번 전까지)
print(numbers[:3]) # [1, 2, 3] (처음부터 3번 전까지)
print(numbers[2:]) # [3, 4, 5] (2번부터 끝까지)
print(numbers[::-1]) # [5, 4, 3, 2, 1] (역순 정렬)
3. 리스트의 주요 메서드 활용

리스트를 다룰 때 많이 사용하는 메서드를 정리해보겠습니다.
| 메서드 | 설명 |
|---|---|
append(x) |
리스트 끝에 요소 추가 |
insert(i, x) |
특정 위치 i에 요소 x 삽입 |
remove(x) |
값 x를 찾아 삭제 |
pop(i) |
인덱스 i의 요소를 제거 후 반환 |
index(x) |
값 x의 인덱스 반환 |
count(x) |
값 x의 개수 반환 |
extend(iterable) |
다른 리스트를 확장 |
clear() |
리스트의 모든 요소 삭제 |
nums = [1, 2, 3]
nums.append(4) # [1, 2, 3, 4]
nums.insert(1, 10) # [1, 10, 2, 3, 4]
nums.remove(10) # [1, 2, 3, 4]
last_item = nums.pop() # [1, 2, 3], last_item = 4
print(nums.index(2)) # 1
print(nums.count(2)) # 1
4. 리스트 컴프리헨션

리스트를 빠르게 생성할 때는 리스트 컴프리헨션을 사용하면 편리합니다.
# 1부터 10까지의 제곱수를 저장하는 리스트
squares = [x ** 2 for x in range(1, 11)]
print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# 짝수만 필터링
evens = [x for x in range(10) if x % 2 == 0]
print(evens) # [0, 2, 4, 6, 8]
5. 리스트 정렬 및 검색

리스트의 요소를 정렬하거나 특정 값을 검색할 수 있습니다.
numbers = [5, 2, 9, 1, 7]
# 오름차순 정렬 (원본 변경)
numbers.sort()
print(numbers) # [1, 2, 5, 7, 9]
# 내림차순 정렬
numbers.sort(reverse=True)
print(numbers) # [9, 7, 5, 2, 1]
# 새로운 정렬된 리스트 반환 (원본 유지)
sorted_numbers = sorted(numbers)
print(sorted_numbers) # [1, 2, 5, 7, 9]
6. 리스트와 메모리 관리
리스트는 동적으로 크기가 조절되지만, 리스트 크기가 커지면 성능이 저하될 수 있습니다.
큰 리스트를 다룰 때는 제너레이터를 고려하는 것이 좋습니다.
# 리스트 사용 (메모리 많이 차지)
big_list = [x for x in range(1000000)]
# 제너레이터 사용 (메모리 절약)
big_gen = (x for x in range(1000000))
7. 리스트 활용 예제
중복 제거하기
nums = [1, 2, 2, 3, 4, 4, 5]
unique_nums = list(set(nums))
print(unique_nums) # [1, 2, 3, 4, 5]
리스트 평탄화 (중첩 리스트 펼치기)
nested = [[1, 2, 3], [4, 5], [6, 7, 8]]
flat = [num for sublist in nested for num in sublist]
print(flat) # [1, 2, 3, 4, 5, 6, 7, 8]
자주 묻는 질문 (FAQ)
1. 리스트의 크기는 제한이 있나요?
파이썬 리스트는 이론적으로 메모리가 허용하는 한 크기에 제한이 없습니다.
2. 리스트의 요소를 한 번에 제거하려면?
list.clear() 또는 del list[:]를 사용하세요.
3. 리스트를 복사할 때 왜 copy()를 써야 하나요?
단순 대입(=)을 하면 참조가 복사되므로, 원본이 변경될 수 있습니다.
a = [1, 2, 3]
b = a.copy() # 또는 b = a[:]
b[0] = 99
print(a) # [1, 2, 3] (원본 유지)
4. 리스트 vs 튜플 차이는?
리스트는 변경 가능(mutable), 튜플은 변경 불가능(immutable) 합니다.
5. 리스트에서 특정 요소의 개수를 빠르게 찾는 방법은?
Counter를 사용하면 빠르게 개수를 셀 수 있습니다.
from collections import Counter
count = Counter([1, 2, 2, 3, 3, 3])
print(count[2]) # 2
'파이썬 (Python)' 카테고리의 다른 글
| 파이썬 딕셔너리 활용법 완벽 정리 (1) | 2025.02.05 |
|---|---|
| 파이썬 함수 정의와 활용법: 코드 효율을 높이는 마법 (3) | 2025.02.02 |
| 파이썬 반복문 쉽게 배우기! 초보자도 금방 이해하는 방법 (1) | 2025.02.01 |
| 파이썬 함수 정의부터 고급 활용까지: 초보자를 위한 체계적인 학습 가이드 (1) | 2025.01.31 |
| 파이썬 반복문 기초부터 활용까지: 초보자를 위한 가이드 (1) | 2025.01.31 |