ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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
Designed by Tistory.