python

Python 리스트(List)

bitandwon 2026. 7. 8. 21:41

Python 리스트(List)란?

리스트(List)는 Python에서 가장 많이 사용하는 자료형 중 하나입니다. 여러 개의 데이터를 하나의 변수에 순서대로 저장할 수 있으며, 값을 자유롭게 추가·수정·삭제할 수 있다는 것이 가장 큰 특징입니다.

웹 개발, 데이터 분석, 인공지능, 자동화 프로그램 등 대부분의 Python 프로젝트에서 리스트를 사용하므로 반드시 익혀야 하는 핵심 개념입니다.

 


리스트 생성하기

대괄호([])를 사용하여 리스트를 생성합니다.

fruits = ["Apple", "Banana", "Orange"]

print(fruits)

실행 결과

['Apple', 'Banana', 'Orange']

리스트에는 문자열뿐 아니라 숫자, 불리언, 다른 리스트 등 다양한 자료형을 함께 저장할 수 있습니다.

data = ["Python", 100, True, 3.14]

print(data)

인덱싱(Indexing)

리스트는 인덱스를 이용해 원하는 요소에 접근할 수 있습니다.

numbers = [10, 20, 30, 40]

print(numbers[0])
print(numbers[2])
print(numbers[-1])

실행 결과

10
30
40
인덱스 의미
0 첫 번째 요소
1 두 번째 요소
-1 마지막 요소
-2 뒤에서 두 번째 요소

슬라이싱(Slicing)

슬라이싱을 사용하면 리스트의 일부를 쉽게 가져올 수 있습니다.

numbers = [10, 20, 30, 40, 50]

print(numbers[1:4])
print(numbers[:3])
print(numbers[2:])
print(numbers[::-1])

실행 결과

[20, 30, 40]
[10, 20, 30]
[30, 40, 50]
[50, 40, 30, 20, 10]

요소 추가하기

리스트에는 다양한 방법으로 요소를 추가할 수 있습니다.

fruits = ["Apple", "Banana"]

fruits.append("Orange")
fruits.insert(1, "Grape")

print(fruits)

실행 결과

['Apple', 'Grape', 'Banana', 'Orange']
메서드 설명
append() 마지막에 추가
insert() 원하는 위치에 추가
extend() 다른 리스트를 이어 붙임

요소 삭제하기

필요 없는 요소는 여러 방법으로 삭제할 수 있습니다.

numbers = [10, 20, 30, 40]

numbers.remove(20)
numbers.pop()
del numbers[0]

print(numbers)

실행 결과

[30]
메서드 설명
remove() 값으로 삭제
pop() 마지막 요소 반환 후 삭제
del 인덱스로 삭제
clear() 모든 요소 삭제

리스트 정렬하기

scores = [90, 70, 100, 80]

scores.sort()

print(scores)

scores.sort(reverse=True)

print(scores)

실행 결과

[70, 80, 90, 100]
[100, 90, 80, 70]

원본 리스트를 유지하려면 sorted() 함수를 사용하는 것이 좋습니다.


반복문과 함께 사용하기

리스트는 반복문과 함께 사용할 때 더욱 강력합니다.

fruits = ["Apple", "Banana", "Orange"]

for fruit in fruits:
    print(fruit)

실행 결과

Apple
Banana
Orange

인덱스와 값을 함께 사용하려면 enumerate()를 활용할 수 있습니다.

for index, fruit in enumerate(fruits, start=1):
    print(index, fruit)

리스트 컴프리헨션(List Comprehension)

리스트 컴프리헨션은 반복문과 조건문을 한 줄로 작성할 수 있는 Python의 강력한 기능입니다.

numbers = [1, 2, 3, 4, 5]

squares = [n * n for n in numbers]

print(squares)

실행 결과

[1, 4, 9, 16, 25]

조건도 함께 사용할 수 있습니다.

even = [n for n in numbers if n % 2 == 0]

print(even)

실행 결과

[2, 4]

얕은 복사와 깊은 복사

리스트를 복사할 때는 얕은 복사와 깊은 복사의 차이를 이해해야 합니다.

numbers = [1, 2, 3]

copy_numbers = numbers.copy()

copy_numbers.append(4)

print(numbers)
print(copy_numbers)

실행 결과

[1, 2, 3]
[1, 2, 3, 4]
복사 방법 설명
copy() 얕은 복사
list() 새 리스트 생성
copy.deepcopy() 중첩 리스트까지 깊은 복사

실무에서 리스트 활용 사례

분야 활용 예시
웹 개발 게시글 목록 관리
데이터 분석 데이터 저장 및 전처리
자동화 파일 목록 처리
AI 개발 학습 데이터 관리
게임 개발 아이템 및 캐릭터 목록

초보자가 자주 하는 실수

  • 인덱스 범위를 벗어나 IndexError가 발생하는 경우
  • append()와 extend()의 차이를 혼동하는 경우
  • sort()가 원본 리스트를 변경한다는 점을 놓치는 경우
  • 중첩 리스트를 단순 복사해 의도하지 않은 변경이 발생하는 경우
  • 반복문에서 리스트를 직접 수정해 예기치 않은 결과가 나오는 경우

리스트 사용 팁

  • 검색이 잦다면 in 연산자를 활용해 요소 존재 여부를 확인합니다.
  • 정렬이 필요 없는 경우에는 원본을 유지하는 sorted()를 고려합니다.
  • 대량의 데이터를 변환할 때는 리스트 컴프리헨션을 활용하면 코드가 간결해집니다.
  • 중첩 리스트를 복사할 때는 copy.deepcopy()를 사용합니다.
  • 가독성을 위해 한 리스트에는 같은 성격의 데이터를 저장하는 것이 좋습니다.

마무리

리스트는 Python에서 가장 자주 사용하는 자료형으로, 데이터 저장과 처리의 핵심 역할을 합니다. 생성, 인덱싱, 슬라이싱, 추가·삭제, 정렬, 반복문, 리스트 컴프리헨션까지 익혀두면 다양한 프로그램을 훨씬 효율적으로 작성할 수 있습니다.


FAQ

Q1. 리스트와 튜플의 차이점은 무엇인가요?

리스트는 요소를 자유롭게 수정할 수 있지만, 튜플은 생성 후 변경할 수 없습니다.

Q2. append()와 extend()는 어떻게 다른가요?

append()는 요소 하나를 추가하고, extend()는 다른 리스트의 요소를 이어 붙입니다.

Q3. sort()와 sorted()의 차이점은 무엇인가요?

sort()는 원본 리스트를 변경하며, sorted()는 새로운 정렬된 리스트를 반환합니다.

Q4. 리스트 컴프리헨션은 언제 사용하는 것이 좋나요?

반복문으로 새로운 리스트를 만드는 작업을 간결하게 표현하고 싶을 때 유용합니다.

Q5. 중첩 리스트를 안전하게 복사하려면 어떻게 해야 하나요?

copy.deepcopy()를 사용하면 내부 리스트까지 독립적으로 복사할 수 있습니다.

'python' 카테고리의 다른 글

Python 문자열(String)  (0) 2026.07.09
Python 딕셔너리(Dictionary)  (0) 2026.07.09
Python 함수(def) 기초와 활용법  (0) 2026.07.07
Python 반복문(for, while)  (0) 2026.07.06
Python 조건문(if, elif, else)  (0) 2026.07.03