Search

파이썬 이론 2회차

파이썬의 자료구조: 리스트, 튜플, 딕셔너리

1. 리스트 (List)

개념

리스트는 여러 값을 순서대로 저장할 수 있는 자료형입니다.
대괄호 [ ] 를 사용하며, 수정·삭제가 가능합니다(mutable).
numbers = [10, 20, 30, 40, 50] names = ["Hannah", "Minji", "Yumi"]
Python
복사

리스트 인덱싱(Indexing)과 슬라이싱(Slicing)

numbers = [10, 20, 30, 40, 50] print(numbers[0]) # 첫 번째 요소 print(numbers[-1]) # 마지막 요소 print(numbers[1:4]) # 2~4번째 요소
Python
복사
출력:
10 50 [20, 30, 40]
Plain Text
복사

리스트 주요 메서드

메서드
설명
예시
결과
append(x)
맨 뒤에 추가
numbers.append(60)
[10, 20, 30, 40, 50, 60]
insert(i, x)
지정 위치에 추가
numbers.insert(2, 99)
[10, 20, 99, 30, 40, 50]
remove(x)
해당 요소 삭제
numbers.remove(30)
[10, 20, 40, 50]
pop()
마지막 요소 꺼내기
numbers.pop()
50
sort()
오름차순 정렬
numbers.sort()
[10, 20, 30, 40, 50]

실습 2-1: 점수 리스트 다루기

scores = [90, 85, 77, 95, 88] # 1) 전체 출력 print(scores) # 2) 평균 점수 구하기 avg = sum(scores) / len(scores) print(f"평균 점수: {avg:.2f}") # 3) 최고/최저 점수 출력 print(f"최고 점수: {max(scores)}, 최저 점수: {min(scores)}")
Python
복사
출력:
평균 점수: 87.00 최고 점수: 95, 최저 점수: 77
Plain Text
복사

2. 튜플 (Tuple)

개념

튜플은 변경이 불가능한(immutable) 리스트입니다.
소괄호 ( )로 선언하며, 주로 데이터 보호 목적에 사용됩니다.
point = (10, 20) print(point[0]) # 10
Python
복사

리스트 vs 튜플 비교

구분
리스트(List)
튜플(Tuple)
선언
[1, 2, 3]
(1, 2, 3)
수정 가능 여부
가능
불가능
속도
약간 느림
빠름
활용 예
학생 점수 목록
좌표, 고정 데이터

실습 2-2: 좌표 관리

coord = (37.5665, 126.9780) # 서울 좌표 print(f"위도: {coord[0]}, 경도: {coord[1]}")
Python
복사

3. 딕셔너리 (Dictionary)

개념

딕셔너리는 키(key) 와 값(value) 의 쌍으로 이루어진 자료형입니다.
중괄호 { }로 선언하며, 키로 접근합니다.
student = { "name": "Hannah", "age": 25, "major": "Data Science" }
Python
복사

딕셔너리 다루기

print(student["name"]) student["age"] = 26 # 값 수정 student["grade"] = "A+" # 새 키 추가 print(student)
Python
복사
출력:
Hannah {'name': 'Hannah', 'age': 26, 'major': 'Data Science', 'grade': 'A+'}
Plain Text
복사

딕셔너리 주요 메서드

메서드
설명
예시
결과
.keys()
모든 키 가져오기
student.keys()
dict_keys(['name', 'age', 'major'])
.values()
모든 값 가져오기
student.values()
dict_values(['Hannah', 25, 'Data Science'])
.items()
키와 값 모두 가져오기
student.items()
dict_items([('name', 'Hannah'), ('age', 25), ('major', 'Data Science')])
.get(key)
안전하게 값 가져오기
student.get('age')
25
.pop(key)
특정 키 삭제
student.pop('major')
‘Data Science’

실습 2-3: 딕셔너리로 학생 관리

student = {"name": "Yumi", "age": 23, "major": "AI"} print("학생 정보:") for key, value in student.items(): print(f"{key} : {value}") # 정보 추가 student["grade"] = "A" print("\n추가 후:", student)
Python
복사
출력:
학생 정보: name : Yumi age : 23 major : AI 추가 후: {'name': 'Yumi', 'age': 23, 'major': 'AI', 'grade': 'A'}
Plain Text
복사

4. 리스트와 딕셔너리 응용

리스트 안에 딕셔너리 (복합 구조)

“리스트는 순서를, 딕셔너리는 의미를 담당합니다.”
students = [ {"name": "Hannah", "age": 25, "score": 90}, {"name": "Minji", "age": 21, "score": 85}, {"name": "Yumi", "age": 23, "score": 95} ] for s in students: print(f"{s['name']}의 점수는 {s['score']}점입니다.")
Python
복사
출력:
Hannah의 점수는 90점입니다. Minji의 점수는 85점입니다. Yumi의 점수는 95점입니다.
Plain Text
복사

미니 퀴즈

문제
보기
1
리스트 선언 방법으로 올바른 것은? ① {1, 2, 3}(1, 2, 3)[1, 2, 3]list: 1, 2, 3
2
튜플의 특징으로 옳지 않은 것은? ① 불변이다 ② 수정 가능하다 ③ 속도가 빠르다 ④ 괄호는 ()이다
3
딕셔너리에서 값을 가져오는 안전한 방법은? ① dict.get(key)dict.value(key)dict.item()dict.key()
4
students = [{"name": "Kim", "age": 20}] 일 때, students[0]["name"]의 결과는?
미니 퀴즈 정답

라이브 코드

# day1: 변수, 데이터 타입, 간단한 함수, 문자열 다루기 # day2: 자료 구조(하나 이상의 데이터를 다루는 구조) a = 10 b = "abc" b[0] c = 3.14 d = True e = None # 변수 사용 이유: 재사용, 필요할 때 쓰기 # 리스트 # [] l = [1, 2, 3, 4, 5] ages = [10, 23, 60, 40, 32] age1 = ages[0] # 인덱싱 age2 = ages[1] # 인덱싱 age4 = ages[-1] # 인덱싱 age1_age2 = ages[0:2] # 슬라이싱 시작숫자:끝숫자의 인덱스번호+1 # (0부터 n까지 가져오려면 -> [0:n+1]) # age1 = 10 # age2 = 23 # 리스트에서 자주 사용하는 함수들 # append: 마지막에 하나의 요소를 추가 ages.append(60) # print(ages) # [10, 15, 23, 60, 40, 32, 60] # insert: 특정 인덱스 위치에 하나의 요소를 추가 ages.insert(1, 15) # print(ages) # remove: 특정 값을 지우기 (값이 여러 개일 경우, 제일 처음 만나는 값을 지운다) ages.remove(60) # print(ages) # [10, 15, 23, 40, 32, 60] # [10, 15, 23, 60, 40, 32, 60] # [10, 15, 23, 40, 32, 60] # pop: 마지막 요소 하나를 꺼내기 last_age = ages.pop() # print(ages) # print(last_age) # 3명의 나이가 적힌 종이 [20, 10, 30] # 나이가 많은 순서대로 10살씩 더해서 출력 # 순서 정렬 [10, 20, 30] # pop 30 + 10, pop 20 + 10, pop 10 + 10 # sort: 오름차순 정렬(위치, 값을 넣어줄 필요가 없다) ages.sort() # print(ages) # 문자열 리스트 -> 알파벳 순서 # 튜플 # () 순서가 있다, 값을 변경할 수 없다. seoul = (1324.42, 9482.12) # 딕셔너리 key(키) - value(값) # {} student = { "name": "Hannah", "age": 25, "major": "Data Science" } b = student["name"] # print(b) # keys 키값을 다 가져오기 student.keys() # valuse 값들을 다 가져오기 student.values() # items 키, 값 모두 가져오기 student.items() # cls = student["class"] # print(cls) # 없는 키에 접근할 때, 오류 발생 ''' Traceback (most recent call last): File "day2.py", line 73, in <module> cls = student["class"] KeyError: 'class' ''' cls_get = student.get("class") # print(cls_get) # None 없다, 없는 키 접근할 때 None # pop(키) # 특정 키에 대해서 값을 가져오기 # 리스트 안에 딕셔너리 # 리스트로 순서를 주고 딕셔너리로 정체를 알려준다. students = [ {"name": "Hannah", "age": 25, "score": 90}, {"name": "Minji", "age": 21, "score": 85}, {"name": "Yumi", "age": 23, "score": 95} ] # 리스트 활용 # 점수 평균 구하기 scores = [91, 85, 77, 95, 88] # 평균 # 다 더한 값 / 갯수 sum_scores = scores[0] + scores[1] + scores[2] + scores[3] + scores[4] length_scores = 5 m = sum_scores / length_scores # 내장 함수 사용하기 함수(변수) sum_scores2 = sum(scores) length_scores2 = len(scores) m2 = sum_scores2 / length_scores2 # max(), min() max_socre = max(scores) min_score = min(scores) # 첫 번째 학생의 성적 점수 first_stu = scores[0] # print(first_stu) scores[0] = 91 # print(scores) # 튜플 활용 coord = (37.5665, 126.9780) coord_1 = coord[0] coord_2 = coord[1] # coord[0] = 37.5666 # 값 수정이 안 됨 # 딕셔너리 활용 # 키-값 -> 순서 중요 x student = { "name": "Hannah", "age": 25, "major": "Data Science" } student["name"] = "Yumi" print(student["name"]) # 각 자료구조를 사용하는 이유 # 각 자료구조의 값들에 접근하는 방법 # 각 자료구조들의 차이 # 자주 사용되는 함수 # 재료 -> 흐름, 제어
Python
복사
Copyright ⓒ 2025 TeamSparta All rights reserved.