Python 리스트(List) 완벽 가이드: 생성부터 고급 연산까지

Python 리스트(list)는 가장 기본적이면서도 강력한 데이터 구조 중 하나입니다. 이 가이드에서는 리스트의 생성, 조회, 수정, 삭제 등 핵심적인 조작 방법을 코드 예제와 함께 상세히 설명합니다.

1. 리스트 생성

리스트는 대괄호 [] 안에 쉼표로 구분된 값을 넣어 생성합니다. 문자열과 마찬가지로 인덱스는 0부터 시작하며, 슬라이싱(slicing)과 결합(concatenation)이 가능합니다.

players = ['wade', 'james', 'bosh', 'haslem']

2. 요소 추가

리스트에 새 요소를 추가하는 방법은 다양합니다.

# 방법 1: append() - 리스트 끝에 단일 요소 추가
numbers = [1, 2, 3, 4]
numbers.append(5)
print(numbers)  # 출력: [1, 2, 3, 4, 5]

# 방법 2: insert() - 특정 위치에 요소 삽입 (첫 번째 인자: 인덱스, 두 번째 인자: 값)
values = [1, 2, 4]
values.insert(2, 3)
print(values)  # 출력: [1, 2, 3, 4]

# 방법 3: extend() - 리스트 끝에 다른 iterable의 모든 요소를 추가
list_a = [1, 2, 3]
list_b = [4, 5, 6]
list_a.extend(list_b)
print(list_a)  # 출력: [1, 2, 3, 4, 5, 6]

3. 리스트 순회 (Traversal)

for 루프를 사용하여 리스트의 모든 요소에 접근할 수 있습니다.

fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
    print(fruit)

4. 값 접근

인덱스를 사용하여 특정 위치의 값을 읽거나, 슬라이싱을 통해 부분 리스트를 얻을 수 있습니다.

numbers = [1, 2, 3, 4, 5, 6, 7]
print(numbers[3])  # 출력: 4

5. 요소 삭제

리스트에서 요소를 제거하는 방법은 세 가지가 있습니다.

# 방법 1: remove() - 첫 번째로 일치하는 값을 삭제
items = [1, 2, 3, 2]
items.remove(2)
print(items)  # 출력: [1, 3, 2] (중복된 첫 번째 값만 삭제)

# 방법 2: pop() - 인덱스 위치의 요소를 삭제하고 반환 (인자 없으면 마지막 요소)
data = [1, 2, 3, 4, 5, 6]
last_item = data.pop()
print(last_item)  # 출력: 6
print(data)       # 출력: [1, 2, 3, 4, 5]

# 방법 3: del 문 - 인덱스, 슬라이스, 또는 리스트 전체를 삭제
nums = [1, 2, 3, 4, 5, 6]
del nums[5]
print(nums)  # 출력: [1, 2, 3, 4, 5]

# 리스트 자체를 삭제하면 더 이상 접근 불가
del nums
# print(nums)  # NameError 발생

6. 정렬 및 뒤집기

# reverse() - 리스트의 순서를 역순으로 변경
items = [1, 2, 3, 4, 5, 6]
items.reverse()
print(items)  # 출력: [6, 5, 4, 3, 2, 1]

# sort() - 리스트를 오름차순으로 정렬
values = [2, 4, 6, 7, 3, 1, 5]
values.sort()
print(values)  # 출력: [1, 2, 3, 4, 5, 6, 7]

# Python 3에서는 서로 다른 자료형(예: 숫자와 문자열)을 함께 정렬할 수 없음
mixed = [2, 4, 6, 7, 3, 1, 5, 'a']
# mixed.sort()  # TypeError: unorderable types: str() < int()

7. 슬라이싱 (Slicing)

슬라이싱을 사용하면 리스트의 일부분을 추출할 수 있으며, 음수 인덱스도 지원합니다.

letters = ['spam', 'Spam', 'SPAM!']
# L[2]      -> 'SPAM!'     (세 번째 요소)
# L[-2]     -> 'Spam'      (뒤에서 두 번째 요소)
# L[1:]     -> ['Spam', 'SPAM!'] (두 번째 요소부터 끝까지)

8. 유용한 함수와 메서드

리스트를 다루기 위한 내장 함수와 메서드 목록입니다.

# 내장 함수
len(list)       # 리스트 요소 개수 반환
max(list)       # 최대값 반환 (모든 요소가 비교 가능해야 함)
min(list)       # 최소값 반환
list(sequence)  # 튜플을 리스트로 변환

# 유용한 메서드들
list.append(obj)       # 리스트 끝에 객체 추가
list.count(obj)        # 객체가 리스트에 나타난 횟수 반환
list.extend(seq)       # 다른 시퀀스의 모든 요소를 리스트 끝에 추가
list.index(obj)        # 객체의 첫 번째 인덱스 반환
list.insert(index, obj) # 특정 인덱스에 객체 삽입
list.pop()             # 마지막 요소를 제거하고 반환
list.remove(obj)       # 첫 번째로 일치하는 객체 제거
list.reverse()         # 리스트 순서를 역순으로 변경
list.sort()            # 리스트를 정렬

태그: python list 데이터구조 리스트조작 append

7월 3일 20:37에 게시됨