Python - 4. 리스트와 문자열 심화

2025. 1. 19. 18:48프로그래밍 언어/Python

Python에서 리스트와 문자열은 가장 자주 사용되는 자료형 중 하나입니다. 이번 섹션에서는 리스트와 문자열의 심화된 활용법과 관련 개념을 다룹니다.


4.1 리스트의 기본 사용법과 주요 메서드

리스트는 순서가 있는 변경 가능한 데이터의 집합입니다.

리스트 기본 사용법

# 리스트 생성
fruits = ["apple", "banana", "cherry"]

# 요소 접근
print(fruits[0])  # apple

# 요소 추가
fruits.append("date")
print(fruits)  # ['apple', 'banana', 'cherry', 'date']

# 요소 제거
fruits.remove("banana")
print(fruits)  # ['apple', 'cherry', 'date']

# 정렬
fruits.sort()
print(fruits)  # ['apple', 'cherry', 'date']

# 길이 확인
print(len(fruits))  # 3

주요 메서드

  • append(x): 리스트 끝에 요소 추가
  • extend(iterable): 리스트에 다른 반복 가능한 객체의 요소를 추가
  • insert(i, x): 지정한 위치에 요소 삽입
  • remove(x): 첫 번째로 일치하는 요소 제거
  • pop([i]): 지정한 위치의 요소를 제거하고 반환 (기본값은 마지막 요소)
  • sort(): 리스트 정렬
  • reverse(): 리스트 순서 뒤집기

4.2 리스트 컴프리헨션

리스트 컴프리헨션은 리스트를 간결하고 효율적으로 생성할 수 있는 방법입니다.

기본 구조

# [표현식 for 변수 in 반복 가능한 객체 if 조건]

squares = [x ** 2 for x in range(10) if x % 2 == 0]
print(squares)  # [0, 4, 16, 36, 64]

다중 if문 사용

# 다중 조건을 사용하는 리스트 컴프리헨션
filtered = [x for x in range(20) if x % 2 == 0 if x % 3 == 0]
print(filtered)  # [0, 6, 12, 18]

중첩 리스트 컴프리헨션

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [num for row in matrix for num in row]
print(flattened)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]

4.3 문자열 메서드와 포매팅

주요 문자열 메서드

text = "  Hello, World!  "

# 공백 제거
print(text.strip())  # "Hello, World!"

# 대소문자 변환
print(text.lower())  # "  hello, world!  "
print(text.upper())  # "  HELLO, WORLD!  "

# 문자열 찾기와 치환
print(text.find("World"))  # 9
print(text.replace("World", "Python"))  # "  Hello, Python!  "

# 문자열 분리와 결합
words = text.split(",")
print(words)  # ['  Hello', ' World!  ']
joined = "-".join(words)
print(joined)  # "  Hello- World!  "

# 특정 문자열로 시작하거나 끝나는지 확인
print(text.startswith("  Hello"))  # True
print(text.endswith("!  "))  # True

문자열 포매팅

name = "Alice"
age = 25

# f-string
print(f"{name} is {age} years old.")

# format 메서드
print("{} is {} years old.".format(name, age))

4.4 슬라이싱 고급 기법

슬라이싱은 리스트나 문자열의 일부를 추출하는 데 사용됩니다.

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

# 기본 슬라이싱
print(nums[2:5])  # [2, 3, 4]

# 음수 인덱스 사용
print(nums[-5:-2])  # [5, 6, 7]

# 간격 지정
print(nums[::2])  # [0, 2, 4, 6, 8]

# 역순 슬라이싱
print(nums[::-1])  # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

4.5 깊은 복사와 얕은 복사

얕은 복사

original = [1, 2, [3, 4]]
shallow = original.copy()
shallow[2][0] = 100
print(original)  # [1, 2, [100, 4]]

깊은 복사

import copy

deep = copy.deepcopy(original)
deep[2][0] = 200
print(original)  # [1, 2, [100, 4]]

4.6 문자열 인코딩과 디코딩

문자열을 바이트 형태로 변환하거나 바이트 데이터를 문자열로 변환할 때 사용됩니다.

# 인코딩
text = "Python"
encoded = text.encode("utf-8")
print(encoded)  # b'Python'

# 디코딩
decoded = encoded.decode("utf-8")
print(decoded)  # "Python"

4.7 정규표현식 기초와 활용

정규표현식은 문자열에서 특정 패턴을 검색하거나 치환할 때 사용됩니다.

기본적인 패턴 문법

  • \d: 숫자 (0-9)
  • \D: 숫자가 아닌 문자
  • \w: 단어 문자 (a-z, A-Z, 0-9, _)
  • \W: 단어 문자가 아닌 문자
  • \s: 공백 문자
  • \S: 공백 문자가 아닌 문자
  • .: 임의의 문자 하나
  • *: 0개 이상의 반복
  • +: 1개 이상의 반복
  • ?: 0개 또는 1개
  • ^: 문자열의 시작
  • $: 문자열의 끝

예제

import re

# 패턴 매칭
pattern = r"\d+"
text = "There are 123 apples."
match = re.findall(pattern, text)
print(match)  # ['123']

# 치환
result = re.sub(pattern, "456", text)
print(result)  # "There are 456 apples."

4.8 집합 자료형과 연산

집합은 중복되지 않는 요소의 모음으로, 수학적 집합 연산을 지원합니다.

집합 생성

set1 = {1, 2, 3}
set2 = {3, 4, 5}

# 합집합
print(set1 | set2)  # {1, 2, 3, 4, 5}

# 교집합
print(set1 & set2)  # {3}

# 차집합
print(set1 - set2)  # {1, 2}

# 대칭차집합
print(set1 ^ set2)  # {1, 2, 4, 5}

이번 섹션에서는 리스트와 문자열의 심화된 사용법과 더불어 정규표현식과 집합 연산까지 다뤘습니다.

'프로그래밍 언어 > Python' 카테고리의 다른 글

Python - 6. 딕셔너리와 튜플  (0) 2025.01.19
Python - 5. 함수  (0) 2025.01.19
Python - 3. 제어문  (0) 2025.01.19
Python - 2. 연산과 연산자  (0) 2025.01.19
Python - 1. 자료형과 변수  (0) 2025.01.19