안녕하세요! 오늘은 파이썬 프로그래밍의 핵심 요소인 리스트와 튜플에 대해 알아보겠습니다. 이 두 데이터 구조는 여러 값을 하나의 변수에 저장할 수 있게 해주는 파이썬의 강력한 기능입니다. 함께 알아볼까요?
리스트(List)란 무엇인가?
리스트는 파이썬에서 가장 많이 사용되는 데이터 구조 중 하나로, 여러 항목을 순서대로 저장할 수 있습니다. 대괄호 []
를 사용하여 만들고, 각 항목은 쉼표로 구분합니다.
python# 빈 리스트 생성
empty_list = []
# 문자열 리스트
fruits = ["사과", "바나나", "딸기", "오렌지"]
# 다양한 데이터 타입을 포함하는 리스트
mixed_list = [1, "파이썬", 3.14, True]
리스트의 주요 특징
- 순서가 있음: 리스트의 각 항목은 특정 순서로 저장됩니다.
- 변경 가능(Mutable): 리스트는 생성 후에도 내용을 변경할 수 있습니다.
- 중복 허용: 같은 값을 여러 번 포함할 수 있습니다.
- 다양한 데이터 타입: 하나의 리스트에 여러 데이터 타입을 혼합하여 저장할 수 있습니다.
리스트 인덱싱과 슬라이싱
리스트의 각 항목은 인덱스(위치)를 통해 접근할 수 있습니다. 파이썬에서 인덱스는 0부터 시작합니다.
pythonfruits = ["사과", "바나나", "딸기", "오렌지"]
# 인덱싱
first_fruit = fruits[0] # "사과"
last_fruit = fruits[-1] # "오렌지"
# 슬라이싱
some_fruits = fruits[1:3] # ["바나나", "딸기"]
리스트 메서드
파이썬 리스트는 다양한 내장 메서드를 제공합니다:
pythonfruits = ["사과", "바나나", "딸기"]
# 항목 추가
fruits.append("오렌지") # ["사과", "바나나", "딸기", "오렌지"]
# 특정 위치에 항목 삽입
fruits.insert(1, "키위") # ["사과", "키위", "바나나", "딸기", "오렌지"]
# 항목 제거
fruits.remove("바나나") # ["사과", "키위", "딸기", "오렌지"]
# 마지막 항목 꺼내기
last = fruits.pop() # "오렌지", fruits는 ["사과", "키위", "딸기"]가 됨
# 리스트 정렬
fruits.sort() # ["딸기", "사과", "키위"]
# 리스트 뒤집기
fruits.reverse() # ["키위", "사과", "딸기"]
# 리스트 길이
length = len(fruits) # 3
튜플(Tuple)이란 무엇인가?
튜플은 리스트와 비슷하지만, 한 번 생성하면 변경할 수 없는(immutable) 데이터 구조입니다. 소괄호 ()
를 사용하여 만들고, 각 항목은 쉼표로 구분합니다.
python# 빈 튜플 생성
empty_tuple = ()
# 문자열 튜플
colors = ("빨강", "파랑", "초록")
# 다양한 데이터 타입을 포함하는 튜플
mixed_tuple = (1, "파이썬", 3.14, False)
# 단일 항목 튜플 (쉼표 필수!)
single_item = ("사과",)
튜플의 주요 특징
- 순서가 있음: 튜플의 각 항목도 특정 순서로 저장됩니다.
- 변경 불가능(Immutable): 튜플은 생성 후에 내용을 변경할 수 없습니다.
- 중복 허용: 같은 값을 여러 번 포함할 수 있습니다.
- 다양한 데이터 타입: 하나의 튜플에 여러 데이터 타입을 혼합하여 저장할 수 있습니다.
튜플 인덱싱과 슬라이싱
튜플도 리스트와 마찬가지로 인덱싱과 슬라이싱이 가능합니다:
pythoncolors = ("빨강", "파랑", "초록", "노랑")
# 인덱싱
first_color = colors[0] # "빨강"
last_color = colors[-1] # "노랑"
# 슬라이싱
some_colors = colors[1:3] # ("파랑", "초록")
튜플 메서드
튜플은 변경이 불가능하므로 리스트보다 제공하는 메서드가 적습니다:
pythoncolors = ("빨강", "파랑", "초록", "파랑")
# 특정 항목의 개수 세기
blue_count = colors.count("파랑") # 2
# 특정 항목의 인덱스 찾기
blue_index = colors.index("파랑") # 1 (첫 번째 "파랑"의 인덱스)
리스트와 튜플의 차이점
특성 | 리스트 | 튜플 |
---|---|---|
구문 | 대괄호 [] | 소괄호 () |
변경 가능성 | 변경 가능 (Mutable) | 변경 불가능 (Immutable) |
메모리 사용 | 상대적으로 많음 | 상대적으로 적음 |
실행 속도 | 상대적으로 느림 | 상대적으로 빠름 |
주요 용도 | 데이터 수정이 필요한 경우 | 데이터 보호가 필요한 경우 |
리스트와 튜플의 활용 예시
리스트 활용 예시
python# 학생 점수 관리
scores = [85, 92, 78, 90, 88]
average = sum(scores) / len(scores)
print(f"평균 점수: {average}")
# 점수 업데이트
scores[2] = 82 # 세 번째 학생의 점수 수정
print(f"수정된 점수: {scores}")
# 새로운 학생 점수 추가
scores.append(95)
print(f"새 학생 추가 후: {scores}")
튜플 활용 예시
python# 좌표 표현
point = (10, 20)
x, y = point # 튜플 언패킹
print(f"X좌표: {x}, Y좌표: {y}")
# 함수에서 여러 값 반환
def get_user_info():
return ("김파이썬", 25, "서울")
name, age, city = get_user_info()
print(f"이름: {name}, 나이: {age}, 도시: {city}")
리스트와 튜플 변환하기
리스트와 튜플은 서로 변환이 가능합니다:
python# 리스트를 튜플로 변환
my_list = [1, 2, 3, 4]
my_tuple = tuple(my_list)
print(my_tuple) # (1, 2, 3, 4)
# 튜플을 리스트로 변환
my_tuple = ('a', 'b', 'c')
my_list = list(my_tuple)
print(my_list) # ['a', 'b', 'c']
중첩 리스트와 튜플
리스트와 튜플은 다른 리스트나 튜플을 포함할 수 있습니다:
python# 중첩 리스트 (2차원 리스트)
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matrix[1][2]) # 6 (2번째 행, 3번째 열)
# 중첩 튜플
nested_tuple = ((1, 2), (3, 4), (5, 6))
print(nested_tuple[0][1]) # 2
마무리
오늘은 파이썬의 리스트와 튜플에 대해 알아보았습니다. 이 두 데이터 구조는 파이썬 프로그래밍에서 매우 중요한 역할을 합니다. 리스트는 변경 가능하여 데이터를 자유롭게 수정할 수 있고, 튜플은 변경 불가능하여 데이터의 안전성을 보장합니다.
다음 포스팅에서는 파이썬의 또 다른 데이터 구조인 세트와 딕셔너리에 대해 알아보겠습니다. 이 두 데이터 구조는 더 특화된 용도로 사용되며, 파이썬 프로그래밍의 효율성을 높여줍니다.
함께 파이썬을 배워나가요! 🐍✨