Python Basic Syntax (파이썬 기초 문법)/Data Structures (자료구조)

List(리스트)

영끼끼 2025. 2. 16. 19:45

✅ List(리스트)

리스트(List)는 여러 개의 데이터를 하나의 변수에 저장할 수 있는 자료형입니다. 파이썬에서 가장 많이 사용되는 자료구조 중 하나로, 변경 가능(mutable) 하고 다양한 데이터 타입을 포함할 수 있습니다.

 

특징 설명
순서가 있다 리스트는 순서가 있는 데이터 구조(Ordered)입니다.
변경 가능 리스트의 요소를 변경, 추가, 삭제할 수 있습니다.
여러 자료형 저장 가능 숫자, 문자열, 리스트 등 다양한 데이터 타입을 포함할 수 있습니다.
인덱싱과 슬라이싱 가능 리스트 요소에 인덱스로 접근할 수 있으며 일부를 추출할 수도 있습니다.

 

✅ 리스트 생성 방법

# 빈 리스트 생성
empty_list = []

# 정수형 리스트
numbers = [1, 2, 3, 4, 5]

# 문자열 리스트
words = ["apple", "banana", "cherry"]

# 혼합된 데이터 타입
mixed = [1, "hello", 3.14, True]

# 리스트 안에 리스트 포함 (중첩 리스트)
nested = [[1, 2, 3], ["a", "b", "c"]]

 

✅ 리스트 인덱싱 & 슬라이싱

 

리스트에서 특정 요소를 가져오거나 조작할 때 가장 많이 사용하는 기능이 인덱싱(Indexing)과 슬라이싱(Slicing) 입니다.
이 기능을 활용하면 리스트에서 원하는 요소만 쉽게 추출할 수 있습니다.

 

# 리스트 생성
numbers = [10, 20, 30, 40, 50, 60, 70, 80]

# ✅ 인덱싱 (Indexing)
print(numbers[0])    # 10  (첫 번째 요소)
print(numbers[-1])   # 80  (마지막 요소)
print(numbers[2])    # 30  (세 번째 요소)
print(numbers[-3])   # 60  (뒤에서 세 번째 요소)

# ✅ 슬라이싱 (Slicing)
print(numbers[1:4])   # [20, 30, 40]  (1번부터 3번까지 가져옴)
print(numbers[:3])    # [10, 20, 30]  (처음부터 2번까지)
print(numbers[3:])    # [40, 50, 60, 70, 80]  (3번부터 끝까지)
print(numbers[::2])   # [10, 30, 50, 70]  (2칸씩 건너뛰기)
print(numbers[::-1])  # [80, 70, 60, 50, 40, 30, 20, 10]  (리스트 뒤집기)

# ✅ 값 변경 (Slicing 활용)
numbers[1:4] = [99, 88, 77]  
print(numbers)  # [10, 99, 88, 77, 50, 60, 70, 80]  (1~3번 변경)

# ✅ 슬라이싱을 이용한 삭제
numbers[2:4] = []  
print(numbers)  # [10, 99, 50, 60, 70, 80]  (88, 77 삭제됨)

# ✅ 문자열에서도 슬라이싱 가능
text = "Hello, World!"
print(text[:5])   # Hello
print(text[::-1]) # !dlroW ,olleH  (문자열 뒤집기)

 

✅ List Comprehension ( 리스트 컴프리헨션 )

 

리스트에서 특정 요소를 가져오거나 조작할 때 가장 많이 사용하는 기능이 인덱싱(Indexing)과 슬라이싱(Slicing) 입니다.
이 기능을 활용하면 리스트에서 원하는 요소만 쉽게 추출할 수 있습니다.

 

new_list = [표현식 for 요소 in 반복가능한객체 if 조건]
# 예제 (1~5까지 숫자의 제곱 리스트 생성):
squares = [x ** 2 for x in range(1, 6)]
print(squares)  # [1, 4, 9, 16, 25]

 


이해를 돕기 위한 코드

# ✅ 리스트 컴프리헨션 예제 모음

# 1. 1부터 5까지의 숫자로 리스트 생성
numbers = [x for x in range(1, 6)]
print("1. 숫자 리스트:", numbers)
# 출력: [1, 2, 3, 4, 5]

# 2. 각 숫자를 제곱한 리스트 생성
squares = [x ** 2 for x in range(1, 6)]
print("2. 제곱 리스트:", squares)
# 출력: [1, 4, 9, 16, 25]

# 3. 1부터 10까지 숫자 중 짝수만 추출
even_numbers = [x for x in range(1, 11) if x % 2 == 0]
print("3. 짝수 리스트:", even_numbers)
# 출력: [2, 4, 6, 8, 10]

# 4. 짝수는 그대로, 홀수는 '홀수'로 변환
odd_even = [x if x % 2 == 0 else "홀수" for x in range(1, 6)]
print("4. 홀수 변환 리스트:", odd_even)
# 출력: ['홀수', 2, '홀수', 4, '홀수']

# 5. 단어 리스트에서 각 단어의 길이만 추출
words = ["apple", "banana", "cherry"]
word_lengths = [len(word) for word in words]
print("5. 단어 길이 리스트:", word_lengths)
# 출력: [5, 6, 6]

# 6. 3x3 행렬 생성
matrix = [[x for x in range(1, 4)] for _ in range(3)]
print("6. 3x3 행렬:", matrix)
# 출력: [[1, 2, 3], [1, 2, 3], [1, 2, 3]]

# 7. 중첩 리스트를 1차원 리스트로 변환 (Flatten)
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flat_list = [num for sublist in nested_list for num in sublist]
print("7. 중첩 리스트 평탄화:", flat_list)
# 출력: [1, 2, 3, 4, 5, 6, 7, 8, 9]