-
[Day 02, TIL] 파이썬 자료구조 : 데이터를 효율적으로 담는 바구니컴퓨터, AI/(국비) Bio-Health AI 2026. 3. 30. 23:17
2026. 03. 26 (목) 수업내용
- Python은 자료구조를 변수화 한다
1. 자료구조의 핵심 " 적게 쓰고 빠르게 찾기!"
자료구조를 배우는 이유 1) 용량을 줄여서 저장하고, 2) 검색속도를 높이기 위함
파이썬의 대표적인 4대 자료 구조
종류 기호 특징 용도 List [ ] 순서있음 / 수정가능(Mutable) / 동적배열 데이터 추가, 삭제가 잦은 경우 Tuple ( ) 순서있음 / 수정불가(Immutable) / 속도빠름 함수의 리턴값, 변하지않는 설정값 Dict { } key : value 쌍 / 검색속도 최상 (hash 함수 활용) 빠른 검색이 필요한 데이터 Set { } 순서 없음 / 중복 허용 안함 중복 제거, 집합연산 ※추가적인 지식
C언어의 배열(Array), linked list
• 배열 : 하나의 데이터 타입만 저장 (동질적 데이터 저장)
한번 메모리가 올라가면 일정한 메모리 확보 후 늘리거나 줄일 수 없다
전체 데이터를 순차적으로 처리할 때 빠름, 편리함
단점 : 삽입 및 삭제가 어렵다
• linked list : 주소가 들어갈 공간을 남겨둔다
삽입 및 삭제가 유리하다
데이터 변동이 가능하다
list와 linked list 짤막 사전지식 2. 리스트(List)를 깊게 이해하기
파이썬 리스트는 단순한 배열이 아닌, 동적 배열 방식으로 작동한다.
공간이 차면 약 12%씩 자동으로 사이즈를 늘려서 효율성을 유지한다
- slicing 결과 : a[0:2]와 같이 슬라이싱한 결과도 list 타입으로 유지된다
- 이질적 데이터 : 리스트 안에 또다른 리스트나 문자열 등 서로 다른 타입을 섞어서 저장 할 수 있다.
- 수정하는 방법 : a[1:2] = ['a', 'b']처럼 범위를 지정해 수정하면 리스트가 풀려서 들어가고, a[2] = ['c']처럼 인덱스 하나에 대입하면 리스트 모양 그대로 들어간다
3. 함수(Function)와 멀티 리턴
파이썬의 함수는 매개변수 타입을 지정하지 않는다.
왜냐? 모든 변수가 주소(포인터, pointer)를 담고 있기 때문이다.
- 멀티 리턴 : 파이썬은 한번에 여러 값을 반환할 수 있다. -> 이때는 tuple형태로 묶인다
def calc(a, b) : return a + b, a * b # 내부적으로는 (a+b, a*b) 튜플 반환 x, y = calc(3, 4) # 언팩킹을 통해 각각 저장된다4. 딕셔너리(Dict)와 Hash 함수 검색
딕셔너리는 hash함수를 사용하여 데이터를 저장하므로 검색속도가 매우 빠르다 (NoSQL 원리와도 같다 /이건 나중에 차차 배우는걸로)

{key : value}
key를 해시로 만들어서 data(value)를 담아둘 보관함번호를 정함
ex) my_dict = {"apple" : "사과"}
↓
해시함수에 넣는다
숫자가 5321이면 준비된 메모리 방 개수로 나눠서 나머지 구함
그래서 나머지(경우수)가 방번호가 되어 키와 함께 값이 저장
5. Lambda와 정렬 (Sort)
복잡한 리스트를 정렬할때는 lambda = 무명함수를 사용한다
school.sort(key = lambda row : row[1], reverse = True)lambda
1. 무명함수??
- 보통 함수는 def 키워드로 이름을 붙여서 선언하고 필요할때마다 함수를 호출해서 사용한다.
하지만 람다는 이름을 붙일 필요도 없을만큼 간단한 작업을 한줄로 끝내고 싶을때 사용한다.
2. 문법구조
Lambda 매개변수 : 결과값
- def나 return같은 키워드가 필요없다.
- 한번 쓰고 버려지는 함수로, 메모리에 이름을 계속 올리고있을 필요가 없어 효율적이다.
- 가독성 : (익숙해지면) 정렬기준이나 필터링 조건을 코드 한줄안에서 바로 확인 가능하다.
- 복잡한 if문이나 여러줄 코드를 넣을 수 없다! -> 오직 한줄의 표현식만 가능
# 일반 함수 def add(a, b) : return a + b # 람다 함수 lambda a, b : a + b'컴퓨터, AI > (국비) Bio-Health AI' 카테고리의 다른 글
[Day 03, TIL] 파이썬 조건문과 반복문 (0) 2026.04.01 TIL (보충) 파이썬 비트연산자 (0) 2026.03.31 [Day 01, TIL] 파이썬의 메모리 구조와 객체 지향의 이해 (0) 2026.03.30