파이썬 자료구조 이해하기: 리스트 편
자료구조 이해하기 리스트
리스트(Lists)란 무엇인가?
리스트는 Python에서 가장 기본적이고 중요한 자료 구조 중 하나로, 다양한 데이터 타입의 항목들을 순서대로 저장할 수 있는 **가변적(mutable)**인 데이터 구조입니다. 리스트는 대괄호 []를 사용해 정의하며, 항목은 쉼표 ,로 구분합니다.
특징
- 순서가 있다 (Ordered): 리스트의 항목은 인덱스를 통해 접근 가능합니다.
- 가변성 (Mutable): 리스트는 생성 후에도 수정, 추가, 삭제가 가능합니다.
- 다양한 데이터 타입: 정수, 문자열, 다른 리스트 등 모든 데이터 타입을 저장할 수 있습니다.
리스트 기본 문법
# 리스트 생성
my_list = [1, 2, 3, 4, 5]
# 요소 접근
print(my_list[0]) # 출력: 1
# 요소 추가
my_list.append(6) # [1, 2, 3, 4, 5, 6]
# 요소 제거
my_list.remove(3) # [1, 2, 4, 5, 6]
# 슬라이싱
print(my_list[1:3]) # 출력: [2, 4]
초급 예제 10개
- 리스트 생성 및 요소 출력하기
fruits = ["apple", "banana", "cherry"]
print(fruits)
- 리스트에 요소 추가하기
numbers = [1, 2, 3]
numbers.append(4)
print(numbers)
- 리스트에서 특정 요소 제거하기
numbers = [1, 2, 3, 4]
numbers.remove(2)
print(numbers)
- 리스트 슬라이싱 이해하기
letters = ['a', 'b', 'c', 'd', 'e']
print(letters[1:4])
- 리스트 요소 수정하기
fruits = ["apple", "banana", "cherry"]
fruits[1] = "mango"
print(fruits)
- 리스트 길이 확인하기
numbers = [10, 20, 30, 40]
print(len(numbers))
- 리스트에서 특정 요소 찾기
fruits = ["apple", "banana", "cherry"]
print("banana" in fruits)
- 리스트 확장하기
list1 = [1, 2, 3]
list2 = [4, 5]
list1.extend(list2)
print(list1)
- 리스트 정렬하기
numbers = [3, 1, 4, 2]
numbers.sort()
print(numbers)
- 리스트 초기화
numbers = [1, 2, 3, 4]
numbers.clear()
print(numbers)
중급 예제 10개
- 2차원 리스트 생성 및 접근
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(matrix[1][2]) # 6
- 리스트 내포 사용하기 (List Comprehension)
squares = [x**2 for x in range(5)]
print(squares) # [0, 1, 4, 9, 16]
- 리스트 요소를 조건에 따라 필터링
python
코드 복사
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = [x for x in numbers if x % 2 == 0]
print(even_numbers)
- 리스트의 최대값과 최소값 찾기
numbers = [10, 20, 30, 40, 50]
print(max(numbers), min(numbers))
- 리스트를 뒤집기
numbers = [1, 2, 3, 4, 5]
numbers.reverse()
print(numbers)
- 리스트를 문자열로 변환
words = ["Python", "is", "fun"]
sentence = " ".join(words)
print(sentence)
- 리스트의 요소를 카운트
numbers = [1, 2, 2, 3, 3, 3]
print(numbers.count(3)) # 3
- 리스트를 중복 제거하고 정렬하기
numbers = [4, 2, 4, 3, 2, 1]
unique_numbers = sorted(set(numbers))
print(unique_numbers)
- 리스트 요소를 인덱스와 함께 출력
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(index, fruit)
- 리스트 병합 후 중복 제거
list1 = [1, 2, 3]
list2 = [3, 4, 5]
merged_list = list(set(list1 + list2))
print(merged_list)
고급 예제 10개
- 리스트에서 모든 조합 생성
from itertools import combinations
numbers = [1, 2, 3]
print(list(combinations(numbers, 2)))
- 리스트로 스택 구현
stack = []
stack.append(1)
stack.append(2)
stack.pop()
print(stack)
- 리스트로 큐 구현
from collections import deque
queue = deque([1, 2, 3])
queue.append(4)
queue.popleft()
print(queue)
- 리스트를 통해 이진 탐색 구현
import bisect
sorted_list = [1, 3, 4, 7, 10]
bisect.insort(sorted_list, 5)
print(sorted_list)
- 리스트로 연결 리스트 구현
class Node:
def __init__(self, value):
self.value = value
self.next = None
- 리스트 내에서 가장 긴 증가하는 부분 수열 찾기
numbers = [10, 20, 10, 30, 40]
(추가적으로 알고리즘 구현 필요)
- 리스트에 대해 DFS/BFS 활용하기
# 그래프 탐색 문제 활용
- 리스트로 힙 구현
import heapq
heap = [5, 1, 3]
heapq.heapify(heap)
heapq.heappush(heap, 2)
print(heap)
- 리스트로 해시 테이블 만들기
hash_table = [[] for _ in range(10)]
- 리스트를 통한 동적 계획법 구현
def fib(n):
dp = [0] * (n + 1)
dp[1] = 1
for i in range(2, n + 1):
dp[i] = dp[i-1] + dp[i-2]
return dp[n]
리스트를 완벽히 이해하기 위한 연습문제
- 리스트에서 중복된 값을 모두 제거하는 함수 구현하기
- 2차원 리스트를 1차원 리스트로 변환하는 함수 작성
- 리스트를 정렬하는 다양한 방법 구현 (버블 정렬, 퀵 정렬 등)
- 리스트를 사용한 간단한 데이터베이스 구조 만들기
- 리스트로 순열과 조합 문제 해결하기
- 주어진 리스트를 이용해 피보나치 수열 생성
- 문자열과 리스트 간의 변환을 활용한 암호화 프로그램 구현
- 리스트를 이용한 간단한 블록체인 구조 작성
- 2차원 리스트에서 특정 패턴 탐색하기
- 리스트로 간단한 게임 (예: 틱택토) 만들기
'코딩 > PYTHON' 카테고리의 다른 글
파이썬 : 함수와 모듈 예제와 설명 (0) | 2024.12.02 |
---|---|
파이썬 논리 연산과 조건문 조합 (0) | 2024.11.30 |
파이썬 반복문: 제어 흐름과 논리 (0) | 2024.11.30 |
파이썬 조건문: 제어 흐름과 논리 (1) | 2024.11.29 |
시작하며: 파이썬이란? (1) | 2024.11.23 |
댓글