4. Python Programming Course : Data Structures
Python Programming Course
Python의 데이터 구조는 실제로 데이터를 다루는 데 있어 매우 강력한 도구입니다. 이 장에서는 기본적인 네 가지 자료구조인 List, Tuple, Set, Dictionary를 학습합니다. 각 자료구조의 특성, 사용법, 메서드 등을 예제와 함께 익혀봅니다.
다양한 데이터를 다루다 보면, 데이터를 어떻게 저장하고, 관리하고, 활용할 것인지가 중요해지는데,
이때 꼭 알아야 할 것이 바로 데이터 구조(Data Structures)입니다.
파이썬에는 list, tuple, set, dict 같은 다양한 내장 데이터 구조가 있는데, 이들을 잘 활용하면:
- 현실 세계의 데이터를 자연스럽게 표현할 수 있고,
- 코드를 짧고 명확하게 만들 수 있으며,
- 성능이 뛰어난 프로그램을 만들 수 있습니다.
예를 들어, 단순히 리스트를 반복문으로 돌리는 대신, set을 사용하면 중복을 제거할 수 있고, dict를 사용하면 복잡한 매핑 관계도 쉽게 구현할 수 있습니다.
4.1 Lists (리스트)
set을 사용하면 중복을 제거할 수 있고, dict를 사용하면 복잡한 매핑 관계도 쉽게 구현할 수 있습니다.1. Creating and Accessing Lists
리스트는 변경 가능한 순차형 데이터 구조입니다.
인덱스를 통해 개별 요소에 접근하거나 라이싱으로 부분 추출이 가능합니다.
[ ]를 이용합니다.
다양한 타입의 데이터(integer, string, ...)를 함께 가질 수 있습니다.
2. List Methods
- append(x) - 리스트의 끝에
x를 추가합니다. - insert(i, x) -
i위치에x를 삽입합니다. - remove(x) - 리스트에서 첫 번째로 나오는
x를 제거합니다. - pop() - 리스트의 마지막 요소를 제거하고 반환합니다.
- sort() - 리스트를 오름차순으로 정렬합니다.
- reverse() - 리스트의 순서를 역순으로 뒤집습니다.
- len(list) - 리스트의 길이(요소 개수)를 반환합니다.
- index(x) - 리스트에서
x가 처음 나타나는 위치(인덱스)를 반환합니다. - count(x) - 리스트 안에서
x가 몇 번 나오는지 반환합니다.
3. List Comprehensions
- 리스트를 간결하게 생성하는 방법입니다.
- [표현식 for 변수 in 반복가능한객체]
4.2 Tuples (튜플)
1. Immutable Sequences
- 튜플은 리스트와 유사하지만 한번 정의하면 변경할 수 없는 자료구조입니다. 따라서, 값이 바뀌면 안 되는 경우 또는, 함수에서 여러 값을 리턴할 때 주로 사용합니다.
- 튜플은 ( ) 소괄호를 사용해서 표현합니다.
2. Tuple Unpacking
- 튜플의 각 요소를 개별 변수에 한 줄로 할당하는 방식으로 언패킹할 변수 수는 요소 수와 같아야 합니다.
4.3 Sets (집합)
1. Unique Elements
중복을 허용하지 않고, 순서가 없습니다.
중복을 허용하지 않고, 순서가 없습니다.
2. Set Operations
4.4 Dictionaries (딕셔너리)
1. Key-Value Pairs
키는 고유해야 하며, 값을 통해 정보를 구조적으로 저장하는 키:값 구조를 가집니다.
{ } 중괄호를 사용합니다.
키는 고유해야 하며, 값을 통해 정보를 구조적으로 저장하는 키:값 구조를 가집니다.
{ } 중괄호를 사용합니다.
2. Dictionary Methods
- get(key, default) - 지정한
key의 값을 반환하며, 없으면 default 값을 반환합니다.
- keys() - 딕셔너리의 모든
key를 반환합니다.
- values() - 딕셔너리의 모든
value를 반환합니다.
- items() - 딕셔너리의
(key, value) 쌍들을 반환합니다.
- copy() - 딕셔너리의 얕은 복사본을 생성합니다.
- clear() - 딕셔너리의 모든 항목을 제거합니다.
- get(key, default) - 지정한
key의 값을 반환하며, 없으면default값을 반환합니다. - keys() - 딕셔너리의 모든
key를 반환합니다. - values() - 딕셔너리의 모든
value를 반환합니다. - items() - 딕셔너리의
(key, value)쌍들을 반환합니다. - copy() - 딕셔너리의 얕은 복사본을 생성합니다.
- clear() - 딕셔너리의 모든 항목을 제거합니다.
아래의 실습문제를 통해 오늘 배운 것을 간단히 복습해보세요.
실습 문제
1. 아래의 word 리스트에서 중복을 제거한 후 알파벳 순으로 정렬된 리스트를 만들어보세요.
words = ['apple', 'banana', 'apple', 'orange', 'banana', 'grape']
2. 아래의 리스트들에서 공통 친구를 출력하세요.
alice_friends = {'Bob', 'Charlie', 'David'}
bob_friends = {'Alice', 'Charlie', 'Eve'}
이 단원을 마치면, Python의 다양한 데이터 구조를 이해하고 적절한 상황에 맞게 선택하여 사용할 수 있습니다. 실습을 통해 직접 다뤄보며 익히는 것이 가장 좋은 학습 방법입니다!
작성자가 댓글을 삭제했습니다.
답글삭제추후에 실무나, 공모전에 나갔을 때, 튜플을 사용할 일도 있을 것 같은데, 이때 튜플의 경우 불변성이라는게 있다는 것으로 아는데, 어느 상황에서 사용해야 리스트보다 유리한지 궁금합니다.
답글삭제1.파이썬의 리스트는 별도의 추가 코드 없이 하나의 리스트 안에 서로 다른 타입의 데이터를 담을 수 있던데, 이러한 동작이 가능한 내부적인 원리가 궁금합니다.
답글삭제(이런 동작이 변수 선언 시 타입을 지정하지 않아도 자동으로 타입을 인식하는 동적 타이핑과 같은 원리인가요?)
파이썬의 set(집합)은 중복을 허용하지 않고, 순서가 없는 자료형이라고 나와있는데,
2. 만약 중복된 값을 넣으면 어떻게 처리되나요?
3. 순서가 없어서 인덱싱이 불가능할 텐데, 특정 요소를 꺼내거나 확인하려면 어떤 방식으로 접근해야 하나요?
1. 딕셔너리에서 get()는 안전하게 값을 가져온다고 하는데 안전하게 가져온다는게 어떤 의미인지 궁금합니다.
답글삭제2. 딕셔너리에서 clear()는 전체값을 제거하는 함수인데 부분 값만 제거하는 방법은 없는건지 궁금합니다.
3. 실습 문제2번에서 '아래의 리스트들에서 공통친구를 출력하세요.' 라 되어 있는데 set도 리스트라고 불리는건지 궁금합니다.
# 중첩 리스트 컴프리헨션
답글삭제matrix = [[i * j for j in range(3)] for i in range(3)] 부분이 이해가 잘 되지 않습니다
리스트 요소 제거 방법으로 del 키워드를 사용하는 것이랑, remove로 제거하는 것이랑 다른 건가요?
답글삭제리스트와 튜플의 차이점중 하나가 데이터를 변경 할 수 있냐 없냐가 있는것 같은데 튜플의 설명에서 "값이 바뀌면 안되는 경우"라는 말이 있고 이러한 튜플의 특징이 구체적으로 사용되는 경우가 어떤 경우인지가 궁금하다.
답글삭제오늘부터 수업 마치고 진행된 내용에 대한 퀴즈를 진행하도록 하겠습니다. 4지선다 형태의 쉬운 퀴즈로 수업내용을 기본적으로 숙지 했다면 90점 이상 받을 수 있는 매우 쉬운 수준입니다.
답글삭제딕셔너리에서 하나의 키에 여러 개의 값을 할당할 수 있나요?
답글삭제