본문으로 건너뛰기

UZU Dev LogoUZU Dev LogoUZU-DEV

[Python] 자료 구조 : 리스트

리스트의 생성, 인덱싱 · 슬라이싱, 수정 · 메서드 활용, 반복문과 중첩 리스트까지 정리한 글

2025년 9월 10일

[Python] 자료 구조 : 리스트 썸네일

1. 리스트(List)란?

리스트는 파이썬에서 가장 많이 사용되는 자료 구조로, 여러 데이터를 순서 있게 저장할 수 있는 구조다. 대괄호([])로 만들며, 숫자 · 문자열 · 불린 값 등 서로 다른 자료형을 하나의 리스트에 넣을 수 있다.

fruits = ["apple", "banana", "cherry"]
numbers = [1, 2, 3, 4, 5]
mixed = [1, "python", True, 3.14]
  • 순서 유지 : 인덱스를 통해 값에 접근 가능
  • 중복 허용 : 같은 값을 여러 번 저장 가능
  • 가변성(Mutable) : 생성 후에도 값 수정 가능

2. 인덱싱과 슬라이싱

2.1 인덱싱 (Indexing)

리스트 안의 값은 0번부터 시작하는 인덱스 번호로 접근한다.

fruits = ["apple", "banana", "cherry"]

print(fruits[0])   # apple
print(fruits[1])   # banana
print(fruits[-1])  # cherry (뒤에서 첫 번째 값)
  • fruits[0] → 첫 번째 값
  • fruits[-1] → 마지막 값
2.2 슬라이싱 (Slicing)

인덱스 범위를 지정해 여러 값을 한 번에 꺼낼 수 있다.

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

print(nums[1:4])   # [20, 30, 40]
print(nums[:3])    # [10, 20, 30]
print(nums[2:])    # [30, 40, 50]
print(nums[::2])   # [10, 30, 50]
  • [시작:끝] → 시작 이상, 끝 미만
  • [::간격] → 일정 간격으로 추출
  • 슬라이싱은 리스트 복사에도 활용됨

3. 리스트 수정

리스트는 생성 이후에도 값을 추가 · 변경 · 삭제할 수 있다.

3.1 값 변경
fruits = ["apple", "banana", "cherry"]
fruits[1] = "grape"
print(fruits)  # ['apple', 'grape', 'cherry']
  • 특정 인덱스의 값을 새 값으로 바꿀 수 있다.
3.2 값 추가
nums = [1, 2, 3]
nums.append(4)         # 맨 뒤에 추가
nums.insert(1, 10)     # 인덱스 1 위치에 삽입
print(nums)  # [1, 10, 2, 3, 4]
  • append() → 맨 뒤에 요소 추가
  • insert(위치, 값) → 특정 위치에 값 삽입
3.3 값 삭제
nums = [1, 2, 3, 4]

del nums[1]          # 인덱스 1 삭제
nums.remove(3)       # 값 3 삭제
popped = nums.pop()  # 맨 뒤 값 꺼내기
print(nums)          # [1]
print(popped)        # 4
  • del → 인덱스로 삭제
  • remove() → 값으로 삭제
  • pop() → 꺼내면서 삭제

4. 주요 메서드

리스트에는 자주 쓰이는 편리한 메서드가 많다.

nums = [5, 2, 8, 1]

nums.sort()        # 오름차순 정렬
nums.reverse()     # 순서 뒤집기
print(nums)        # [8, 5, 2, 1]

print(nums.index(5))   # 값 5의 위치 → 1
print(nums.count(2))   # 값 2의 개수 → 1
  • append(x) : 맨 뒤에 x 추가
  • insert(i, x) : i번째 위치에 x 삽입
  • remove(x) : 값 x 삭제
  • pop([i]) : i번째 값 꺼내기 (생략 시 맨 뒤)
  • sort() : 오름차순 정렬 (reverse=True로 내림차순 가능)
  • reverse() : 순서 뒤집기
  • index(x) : 값 x의 위치(인덱스) 반환
  • count(x) : 값 x의 개수 반환

5. 리스트와 반복문

리스트는 반복문과 함께 쓰면 강력하다.

fruits = ["apple", "banana", "cherry"]

for f in fruits:
    print(f
  • 리스트 안의 값을 하나씩 꺼내 사용
for i in range(len(fruits)):
    print(i, fruits[i])
  • 인덱스와 값을 동시에 활용 가능

6. 중첩 리스트

리스트 안에 또 다른 리스트를 넣어 2차원 구조처럼 사용할 수 있다.

matrix = [[1, 2], [3, 4], [5, 6]]

print(matrix[0])      # [1, 2]
print(matrix[1][1])   # 4
  • matrix[row][col] 형식으로 접근
  • 표 형태의 데이터, 행렬 계산 등에 활용

[Python] 자료 구조 : 리스트