Python의 리스트(List) 데이터 타입

개요

Python에서 list는 여러 개의 값을 순서대로 저장할 수 있는 데이터 타입입니다. 리스트는 대괄호([])로 감싸고, 각 요소는 쉼표(,)로 구분합니다. 이 자료에서는 list 데이터 타입의 특징, 활용 방법, 주요 메서드 등을 자세히 다룰 것입니다.

목차

  1. list 데이터 타입 개요
  2. 리스트 생성
  3. 리스트 인덱싱과 슬라이싱
  4. 리스트 연산
  5. 리스트 수정
  6. 리스트 메서드
  7. 리스트 컴프리헨션

1. list 데이터 타입 개요

  • list는 Python에서 가장 많이 사용되는 시퀀스 데이터 타입입니다.
  • 하나의 리스트에 서로 다른 데이터 타입의 요소를 함께 저장할 수 있습니다.
  • 리스트는 변경 가능한(mutable) 시퀀스 타입으로, 요소를 추가, 삭제, 수정할 수 있습니다.
  • 문자열(str)과 달리 리스트는 생성 후에도 내용을 자유롭게 변경할 수 있습니다.

2. 리스트 생성

Python에서 리스트를 생성하는 방법은 다음과 같습니다.

# 빈 리스트 생성
empty_list = []
empty_list2 = list()

# 정수형 리스트
numbers = [1, 2, 3, 4, 5]

# 문자열 리스트
fruits = ['사과', '바나나', '딸기']

# 혼합 데이터 타입 리스트
mixed = [1, 'hello', 3.14, True]

# 중첩 리스트
nested = [[1, 2], [3, 4], [5, 6]]

3. 리스트 인덱싱과 슬라이싱

리스트의 특정 위치에 접근하려면 인덱싱을 사용하고, 일부분을 추출하려면 슬라이싱을 사용합니다.

fruits = ['사과', '바나나', '딸기', '포도', '수박']

# 인덱싱
first = fruits[0]      # '사과'
last = fruits[-1]      # '수박'

# 슬라이싱
some_fruits = fruits[1:3]    # ['바나나', '딸기']
first_three = fruits[:3]     # ['사과', '바나나', '딸기']
last_two = fruits[-2:]       # ['포도', '수박']

# 스텝을 이용한 슬라이싱
every_other = fruits[::2]    # ['사과', '딸기', '수박']
reversed_list = fruits[::-1] # ['수박', '포도', '딸기', '바나나', '사과']

4. 리스트 연산

리스트는 다른 리스트와 결합하거나 반복하는 등의 연산을 할 수 있습니다.

# 리스트 결합
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list1 + list2  # [1, 2, 3, 4, 5, 6]

# 리스트 반복
repeated = list1 * 3  # [1, 2, 3, 1, 2, 3, 1, 2, 3]

# 요소 존재 여부 확인
print(3 in list1)     # True
print(7 in list1)     # False

# 리스트 길이 확인
length = len(list1)   # 3

5. 리스트 수정

리스트는 변경 가능(mutable)하므로, 요소를 자유롭게 수정, 추가, 삭제할 수 있습니다.

fruits = ['사과', '바나나', '딸기']

# 요소 수정
fruits[1] = '망고'          # ['사과', '망고', '딸기']

# 요소 추가
fruits.append('포도')       # ['사과', '망고', '딸기', '포도']

# 특정 위치에 삽입
fruits.insert(1, '키위')    # ['사과', '키위', '망고', '딸기', '포도']

# 요소 삭제
fruits.remove('망고')       # ['사과', '키위', '딸기', '포도']

# 인덱스로 삭제
del fruits[0]               # ['키위', '딸기', '포도']

# 마지막 요소 꺼내기
last = fruits.pop()         # '포도', fruits = ['키위', '딸기']

6. 리스트 메서드

list 데이터 타입은 다양한 내장 메서드를 제공하여 리스트를 조작하고 변환할 수 있습니다. 예를 들어:

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

# 정렬
numbers.sort()              # [1, 1, 2, 3, 4, 5, 6, 9]

# 역순 정렬
numbers.sort(reverse=True)  # [9, 6, 5, 4, 3, 2, 1, 1]

# 리스트 뒤집기
numbers.reverse()           # [1, 1, 2, 3, 4, 5, 6, 9]

# 특정 값의 개수
count = numbers.count(1)    # 2

# 특정 값의 인덱스
index = numbers.index(5)    # 5

# 리스트 확장
numbers.extend([10, 11])    # [1, 1, 2, 3, 4, 5, 6, 9, 10, 11]

# 리스트 복사
copy_list = numbers.copy()

# 리스트 초기화
numbers.clear()             # []

7. 리스트 컴프리헨션

리스트 컴프리헨션은 간결하게 리스트를 생성하는 Python의 강력한 기능입니다.

# 기본 리스트 컴프리헨션
squares = [x**2 for x in range(1, 6)]    # [1, 4, 9, 16, 25]

# 조건부 리스트 컴프리헨션
evens = [x for x in range(10) if x % 2 == 0]  # [0, 2, 4, 6, 8]

# 중첩 리스트 컴프리헨션
matrix = [[i * j for j in range(1, 4)] for i in range(1, 4)]
# [[1, 2, 3], [2, 4, 6], [3, 6, 9]]

# 문자열 처리에 활용
words = ['hello', 'world', 'python']
upper_words = [w.upper() for w in words]  # ['HELLO', 'WORLD', 'PYTHON']

Python의 리스트(List) 데이터 타입 더 읽기"