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 |