개요
Python에서 list는 여러 개의 값을 순서대로 저장할 수 있는 데이터 타입입니다. 리스트는 대괄호([])로 감싸고, 각 요소는 쉼표(,)로 구분합니다. 이 자료에서는 list 데이터 타입의 특징, 활용 방법, 주요 메서드 등을 자세히 다룰 것입니다.
목차
- list 데이터 타입 개요
- 리스트 생성
- 리스트 인덱싱과 슬라이싱
- 리스트 연산
- 리스트 수정
- 리스트 메서드
- 리스트 컴프리헨션
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']