[Python] 리스트와 딕셔너리 완벽 이해하기
Python에서 가장 많이 사용되는 데이터 구조인 리스트와 딕셔너리의 기본부터 실전 활용법까지 알아보자.
리스트 기본 연산
리스트 생성과 접근
# 리스트 생성
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", 3.14, True]
# 인덱싱
first = numbers[0] # 첫 번째 요소
last = numbers[-1] # 마지막 요소
# 슬라이싱
subset = numbers[1:4] # [2, 3, 4]
reversed_list = numbers[::-1] # [5, 4, 3, 2, 1]
리스트 수정
# 요소 추가
numbers.append(6) # [1, 2, 3, 4, 5, 6]
numbers.insert(0, 0) # [0, 1, 2, 3, 4, 5, 6]
# 요소 삭제
numbers.remove(3) # 값 3을 삭제
del numbers[0] # 첫 번째 요소 삭제
popped = numbers.pop() # 마지막 요소 삭제 후 반환
# 리스트 연결
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list1 + list2 # [1, 2, 3, 4, 5, 6]
딕셔너리 활용법
딕셔너리 기본
# 딕셔너리 생성
student = {
'name': 'John',
'age': 20,
'grades': [90, 85, 88]
}
# 값 접근
name = student['name']
age = student.get('age') # 안전한 접근 방법
# 값 수정/추가
student['age'] = 21
student['email'] = 'john@example.com'
# 값 삭제
del student['grades']
email = student.pop('email')
딕셔너리 고급 기능
# 키, 값, 아이템 순회
for key in student.keys():
print(key)
for value in student.values():
print(value)
for key, value in student.items():
print(f"{key}: {value}")
# 기본값 설정
grades = student.setdefault('grades', []) # 키가 없으면 빈 리스트 생성
# 딕셔너리 병합
defaults = {'age': 18, 'grade': 'A'}
student.update(defaults) # 기존 값 유지, 없는 키만 추가
리스트 컴프리헨션
기본 문법
# 기본 형태
squares = [x**2 for x in range(10)] # 0부터 9까지의 제곱수
# 조건 추가
even_squares = [x**2 for x in range(10) if x % 2 == 0]
# 중첩 반복문
pairs = [(x, y) for x in [1, 2, 3] for y in [3, 1, 4]]
실전 예제
# 문자열 처리
words = ['hello', 'world', 'python']
lengths = [len(word) for word in words]
# 조건부 값 변경
numbers = [1, -2, 3, -4, 5]
absolute = [num if num >= 0 else -num for num in numbers]
# 중첩 리스트 평탄화
matrix = [[1, 2, 3], [4, 5, 6]]
flattened = [num for row in matrix for num in row]
자주 쓰는 메서드
리스트 메서드
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3]
# 정렬
numbers.sort() # 오름차순 정렬
numbers.sort(reverse=True) # 내림차순 정렬
# 카운트와 인덱스
count = numbers.count(5) # 값 5의 개수
index = numbers.index(4) # 값 4의 첫 번째 위치
# 리스트 조작
numbers.extend([7, 8, 9]) # 여러 요소 추가
numbers.clear() # 모든 요소 삭제
딕셔너리 메서드
info = {'name': 'Alice', 'age': 25}
# 안전한 값 가져오기
name = info.get('name', 'Unknown') # 기본값 설정
age = info.get('age', 0)
# 딕셔너리 복사
info_copy = info.copy() # 얕은 복사
deep_copy = copy.deepcopy(info) # 깊은 복사
# 모든 키-값 쌍 삭제
info.clear()
실전 활용 예제
빈도수 계산
# 단어 빈도수 계산
text = "hello world hello python world"
word_count = {}
for word in text.split():
word_count[word] = word_count.get(word, 0) + 1
print(word_count) # {'hello': 2, 'world': 2, 'python': 1}
데이터 그룹화
# 학생 성적 그룹화
grades = [
{'name': 'John', 'grade': 'A'},
{'name': 'Jane', 'grade': 'B'},
{'name': 'Bob', 'grade': 'A'}
]
by_grade = {}
for student in grades:
grade = student['grade']
by_grade.setdefault(grade, []).append(student['name'])
print(by_grade) # {'A': ['John', 'Bob'], 'B': ['Jane']}
'개발&프로그래밍' 카테고리의 다른 글
[python] 함수 작성법과 활용 (1) | 2024.11.21 |
---|---|
[python] 파일 입출력 기초 가이드 (1) | 2024.11.20 |
[Python] Matplotlib으로 데이터 시각화하기 (0) | 2024.11.19 |
[Python] Pandas DataFrame (2) | 2024.11.19 |
[Python] NumPy 배열 연산 마스터하기 (0) | 2024.11.18 |
댓글