혼공학습단/혼공파

[혼공파] Python 자료형: 리스트, 딕셔너리, 범위형 자료형

sunghoyaaa 2025. 1. 25. 23:00

혼자 공부하는 파이썬 (개정판)

이 게시글은 혼공학습단(혼공파) 13기의 3주차 과제를 포함하고있습니다.

Python은 다양한 데이터를 다루기 위한 강력한 자료형을 제공합니다. 이 글에서는 리스트(List), 딕셔너리(Dictionary), 그리고 범위형(Range) 자료형의 특징과 사용법을 알아보겠습니다.


1. 리스트 (List)

리스트는 순서가 있는 값들의 모음으로, 대괄호([])로 정의됩니다. Python의 리스트는 변경 가능(mutable)하며, 다양한 자료형의 값을 함께 담을 수 있습니다.

주요 특징

  • 순서가 있음: 리스트는 순서를 유지하며, 인덱스를 통해 값에 접근할 수 있습니다.
  • 가변성: 값을 추가, 삭제, 수정할 수 있습니다.
  • 다양한 자료형 혼합 가능: 정수, 문자열, 리스트 등 다양한 자료형을 한 리스트에 담을 수 있습니다.

리스트 생성

리스트를 생성하는 방법은 간단하며, 빈 리스트부터 초기값이 있는 리스트까지 다양하게 가능합니다.

# 빈 리스트 생성
minions = []

# 초기 값이 있는 리스트 생성
minions_names = ["Kevin", "Stuart", "Bob"]
mixed = ["Banana", 42, ["Gru", "Dr.Nefario"]]

주요 메서드와 예시

리스트의 조작 방법은 다양하며, 데이터를 효율적으로 처리할 수 있도록 도와줍니다.

# 값 추가
minions_names.append("Dave")  # ["Kevin", "Stuart", "Bob", "Dave"]

# 값 삽입
minions_names.insert(1, "Jerry")  # ["Kevin", "Jerry", "Stuart", "Bob", "Dave"]

# 값 삭제
minions_names.remove("Jerry")  # ["Kevin", "Stuart", "Bob", "Dave"]

# 정렬
minions_names.sort()  # 오름차순 정렬
minions_names.sort(reverse=True)  # 내림차순 정렬

# 리스트 컴프리헨션
uppercase_names = [name.upper() for name in minions_names]  # ["KEVIN", "STUART", "BOB", "DAVE"]

리스트 컴프리헨션은 반복문과 조건문을 활용해 간결하게 리스트를 생성할 수 있는 강력한 도구입니다. 예를 들어, 리스트의 모든 값을 대문자로 변환하는 작업을 한 줄로 처리할 수 있습니다.


2. 딕셔너리 (Dictionary)

딕셔너리는 키-값(key-value) 쌍의 모음으로, 중괄호({})를 사용하여 정의됩니다. 키를 통해 값을 빠르게 조회할 수 있는 자료형입니다.

주요 특징

  • 키(Key)는 고유해야 함: 중복된 키는 허용되지 않습니다.
  • 값(Value)는 중복 가능: 값에는 어떤 자료형이든 올 수 있습니다.
  • 순서 유지: Python 3.7부터 삽입 순서가 유지됩니다.

딕셔너리 생성

딕셔너리는 구조화된 데이터를 저장하는 데 유용합니다. 키를 사용하여 데이터를 효율적으로 관리할 수 있습니다.

# 빈 딕셔너리 생성
minion_profile = {}

# 초기 값이 있는 딕셔너리 생성
minion_profile = {
    "name": "Kevin",
    "age": 7,
    "hobbies": ["dancing", "eating bananas"]
}

주요 메서드와 예시

딕셔너리는 키-값 쌍을 조작할 수 있는 다양한 메서드를 제공합니다.

# 값 추가 및 수정
minion_profile["city"] = "Minionville"
minion_profile["age"] = 8

# 값 삭제
minion_profile.pop("city")  # {"name": "Kevin", "age": 8, "hobbies": ["dancing", "eating bananas"]}

# 키와 값 조회
keys = minion_profile.keys()  # dict_keys(['name', 'age', 'hobbies'])
values = minion_profile.values()  # dict_values(['Kevin', 8, ['dancing', 'eating bananas']])
items = minion_profile.items()  # dict_items([('name', 'Kevin'), ('age', 8), ('hobbies', ['dancing', 'eating bananas'])])

# 딕셔너리 컴프리헨션
hobby_lengths = {key: len(value) if isinstance(value, list) else len(str(value)) for key, value in minion_profile.items()}  # {'name': 5, 'age': 1, 'hobbies': 2}

딕셔너리 컴프리헨션을 사용하면 조건에 따라 값을 동적으로 변환하거나 필터링할 수 있습니다. 위 예제에서는 각 키의 값의 길이를 계산해 새로운 딕셔너리를 생성합니다.


3. 범위형 (Range)

range는 주로 반복문에서 사용되는 자료형으로, 특정 범위의 숫자 시퀀스를 생성합니다.

주요 특징

  • 순차적인 정수 생성: 시작 값부터 종료 값 직전까지 정수를 생성합니다.
  • 메모리 효율성: 실제로 값을 저장하지 않고, 필요할 때 값을 생성합니다.
  • 불변성: 생성된 range 객체는 변경할 수 없습니다.

범위형 생성

범위형은 반복 작업이나 간격 계산에 유용합니다.

# 기본 사용법
minion_ids = range(5)  # 0부터 4까지

# 시작과 종료값 지정
special_minion_ids = range(1, 6)  # 1부터 5까지

# 간격 지정
even_minion_ids = range(0, 10, 2)  # 0, 2, 4, 6, 8

범위형 활용

반복문과 결합하거나 특정 조건을 기반으로 범위형을 조작할 수 있습니다.

# 리스트로 변환
list_minion_ids = list(minion_ids)  # [0, 1, 2, 3, 4]

# 반복문에서 사용
for id in special_minion_ids:
    print(f"Minion ID: {id}")  # Minion ID: 1, 2, 3, 4, 5

# 필터링과 결합
filtered_ids = [id for id in even_minion_ids if id % 4 == 0]  # [0, 4, 8]

메모리 효율적인 range 객체는 리스트 변환 없이도 반복문에서 사용할 수 있습니다. 필요에 따라 리스트로 변환하거나 조건을 적용해 특정 값을 필터링할 수도 있습니다.


4. 리스트, 딕셔너리, 범위형 비교

자료형주요 특징사용 예시

리스트 순서 있음, 가변적 값 목록 저장 및 조작
딕셔너리 키-값 쌍, 순서 있음 구조화된 데이터 저장
범위형 정수 시퀀스 생성, 불변적 반복문 및 간격 계산

결론

Python의 리스트, 딕셔너리, 그리고 범위형 자료형은 데이터를 저장하고 조작하는 데 매우 유용한 도구입니다. 각각의 자료형은 고유한 장점과 특징을 가지며, 적재적소에 활용할 수 있습니다.

728x90