리스트의 기초 및 활용

리스트는 파이썬에서 가장 유용한 데이터 구조 중 하나로, 순서가 있으며 가변적인 컬렉션입니다. 리스트는 다양한 타입의 객체를 포함할 수 있으며, 인덱싱, 슬라이싱, 수정, 추가, 삭제 등 다양한 연산을 지원합니다.

1. 리스트 생성 방법

리스트는 대괄호 []로 정의하거나, list() 함수를 사용해 생성할 수 있습니다.

# 빈 리스트 생성
empty_list = []

# 값이 있는 리스트
numbers = [1, 2, 3, 4]
mixed_data = ['apple', 42, True, [1, 2]]

# range 함수를 통해 숫자 리스트 생성
sequence = list(range(5))  # [0, 1, 2, 3, 4]

2. 리스트 요소 접근 및 슬라이싱

리스트는 인덱스 기반으로 접근 가능하며, 음수 인덱스로 뒤에서부터 참조할 수 있습니다. 슬라이싱은 특정 범위의 요소를 추출하는 데 사용됩니다.

data = ['a', 'b', 'c', 'd', 'e']

print(data[0])        # 'a'
print(data[-1])       # 'e'
print(data[1:4])      # ['b', 'c', 'd']
print(data[:3])       # ['a', 'b', 'c']
print(data[::2])      # ['a', 'c', 'e'] (간격 2로 추출)

3. 리스트 조작 메서드

  • append(item) : 리스트 끝에 항목 추가
  • insert(index, item) : 지정된 위치에 항목 삽입
  • remove(item) : 첫 번째로 일치하는 항목 제거
  • pop(index) : 지정된 인덱스의 항목 제거하고 반환
  • extend(iterable) : 다른 시퀀스의 모든 요소를 리스트에 추가
  • sort() : 원본 리스트를 정렬 (오름차순)
  • reverse() : 리스트 순서를 뒤집음
fruits = ['banana', 'apple']
fruits.append('orange')           # ['banana', 'apple', 'orange']
fruits.insert(1, 'grape')         # ['banana', 'grape', 'apple', 'orange']
fruits.remove('apple')            # ['banana', 'grape', 'orange']
popped = fruits.pop()             # 'orange' 반환, 리스트: ['banana', 'grape']
fruits.extend(['kiwi', 'mango'])  # ['banana', 'grape', 'kiwi', 'mango']
fruits.sort()                     # ['banana', 'grape', 'kiwi', 'mango']
fruits.reverse()                  # ['mango', 'kiwi', 'grape', 'banana']

4. 리스트 연산자

리스트는 +* 연산자를 지원합니다.

a = [1, 2]
b = [3, 4]

print(a + b)        # [1, 2, 3, 4] - 병합
print(a * 3)        # [1, 2, 1, 2, 1, 2] - 반복
print(2 in a)       # True - 포함 여부 확인

5. 내장 함수 사용

다음과 같은 함수는 리스트에 적용 가능합니다.

함수 설명
len(lst) 리스트 길이 반환
max(lst) 최댓값 반환 (숫자 또는 문자열 기준)
min(lst) 최솟값 반환
sum(lst) 숫자 리스트의 합계 반환
sorted(lst) 정렬된 새 리스트 반환 (원본 유지)
enumerate(lst) 인덱스와 값을 함께 반복 가능
scores = [85, 92, 78, 96]
print(max(scores))     # 96
print(sum(scores))     # 351
for idx, val in enumerate(scores):
    print(f"{idx}: {val}")

6. 중첩 리스트 및 깊은 복사

리스트 안에 또 다른 리스트가 포함될 수 있으며, 이 경우 단순 할당은 얕은 복사가 됩니다. 깊은 복사를 원한다면 copy.deepcopy()를 사용해야 합니다.

nested = [['a', 'b'], ['c', 'd']]
shallow_copy = nested[:]           # 얕은 복사
deep_copy = copy.deepcopy(nested)  # 깊은 복사

7. 리스트 복제 및 슬라이싱

슬라이싱은 리스트의 일부를 복제하는 데 매우 효과적입니다.

original = [1, 2, 3, 4, 5]
copy_slice = original[:]          # 전체 복제
partial = original[1:4]           # [2, 3, 4]
reversed_list = original[::-1]    # [5, 4, 3, 2, 1]

8. 리스트 반복 및 조건 처리

리스트를 반복하면서 조건에 따라 필터링할 수 있습니다.

names = ['Alice', 'Bob', 'Anna', 'Charlie']
filtered = [name for name in names if name.startswith('A')]

print(filtered)  # ['Alice', 'Anna']

9. 실습 예제: 감성 텍스트 필터링

감성어(예: "악", "좋아")를 포함한 문장을 입력받아, 해당 단어를 ***로 치환하는 프로그램.

sensitive_words = ["악", "지저분", "싫어"]
text = input("내용을 입력하세요: ").strip()

result = text
for word in sensitive_words:
    result = result.replace(word, "***")

print(result)

10. 리스트를 통한 다차원 데이터 처리

리스트를 이용해 행렬처럼 데이터를 다룰 수 있습니다.

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# 특정 행 출력
print(matrix[1])  # [4, 5, 6]

# 특정 열 추출
column = [row[2] for row in matrix]  # [3, 6, 9]

태그: python 리스트 슬라이싱 반복문 내장함수

6월 27일 01:39에 게시됨