파이썬 리스트와 튜플: 데이터 컬렉션의 기초

안녕하세요! 오늘은 파이썬 프로그래밍의 핵심 요소인 리스트와 튜플에 대해 알아보겠습니다. 이 두 데이터 구조는 여러 값을 하나의 변수에 저장할 수 있게 해주는 파이썬의 강력한 기능입니다. 함께 알아볼까요?

리스트(List)란 무엇인가?

리스트는 파이썬에서 가장 많이 사용되는 데이터 구조 중 하나로, 여러 항목을 순서대로 저장할 수 있습니다. 대괄호 []를 사용하여 만들고, 각 항목은 쉼표로 구분합니다.

python# 빈 리스트 생성
empty_list = []

# 문자열 리스트
fruits = ["사과", "바나나", "딸기", "오렌지"]

# 다양한 데이터 타입을 포함하는 리스트
mixed_list = [1, "파이썬", 3.14, True]

리스트의 주요 특징

  1. 순서가 있음: 리스트의 각 항목은 특정 순서로 저장됩니다.
  2. 변경 가능(Mutable): 리스트는 생성 후에도 내용을 변경할 수 있습니다.
  3. 중복 허용: 같은 값을 여러 번 포함할 수 있습니다.
  4. 다양한 데이터 타입: 하나의 리스트에 여러 데이터 타입을 혼합하여 저장할 수 있습니다.

리스트 인덱싱과 슬라이싱

리스트의 각 항목은 인덱스(위치)를 통해 접근할 수 있습니다. 파이썬에서 인덱스는 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 = ("사과",)

튜플의 주요 특징

  1. 순서가 있음: 튜플의 각 항목도 특정 순서로 저장됩니다.
  2. 변경 불가능(Immutable): 튜플은 생성 후에 내용을 변경할 수 없습니다.
  3. 중복 허용: 같은 값을 여러 번 포함할 수 있습니다.
  4. 다양한 데이터 타입: 하나의 튜플에 여러 데이터 타입을 혼합하여 저장할 수 있습니다.

튜플 인덱싱과 슬라이싱

튜플도 리스트와 마찬가지로 인덱싱과 슬라이싱이 가능합니다:

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

마무리

오늘은 파이썬의 리스트와 튜플에 대해 알아보았습니다. 이 두 데이터 구조는 파이썬 프로그래밍에서 매우 중요한 역할을 합니다. 리스트는 변경 가능하여 데이터를 자유롭게 수정할 수 있고, 튜플은 변경 불가능하여 데이터의 안전성을 보장합니다.

다음 포스팅에서는 파이썬의 또 다른 데이터 구조인 세트와 딕셔너리에 대해 알아보겠습니다. 이 두 데이터 구조는 더 특화된 용도로 사용되며, 파이썬 프로그래밍의 효율성을 높여줍니다.

함께 파이썬을 배워나가요! 🐍✨