[SK shiedlus Rookies 23]Python(4)_24.10.18

박소민·2024년 10월 28일

Python

목록 보기
8/23

고급함수

이터레이터

Iterable(이터러블)

: 반복 가능한 객체

  • for ~ in Iterable한 객체:
  • 대표적 타입 ↩️
    -list, dict, tuple, set, str
    -range() ➜ 범위의 연속성을 보이는 내장함수
    -bytes

🔸 EX.01-A > 체크 방법(1)
🔸 EX.01-B > 체크 방법(2): 라이브러리를 이용한 확인
from 파일명(라이브러리) import 함수이름

Iterator(이터레이터)

  • Iterator 객체 : 값을 차례대로 꺼낼수 있는 객체
    ➜ So. 값을 꺼낼때 제어가능
  • From. Iterable 객체 ➜ 내장함수/맴버(내부)함수를 이용Iterator 객체 획득 가능 : 상호연결성(+)
    ✅ for문 같은 반복문에서 어떤 객체를 사용하던 결과값 동일.
  • 객체 값 제어: next() 사용
    • while문에서 유용
    • So. 필요할때 필요한 만큼 추출한다면!! -> Iterator 객체

🔸EX.01-A > 결과값 동일
( So. 데이터 추출 시, 객체 값 제어 기능X => 굳이 Iterator 객체 사용X )
EX.02-A > 객체값 제어 기능. next()

             🔽🔽🔽

EX.02-B > 제어 + while문 변형

💥제너레이터

: 값을 차례대로 꺼낼수 있는 객체을 생성(=Iterator) 후,
값을 원할때 차례대로 꺼낼수 있는 기능 가진 객체

                    ⤷ 즉, iterator 생성 후 원할 때 객체 값을 뽑아낸다.
  • 제어
  1. yield
    • 의미: 잠시 기다린다 ➜ 뭔가 처리, 다음 명령까지 대기
    • 반복문안에서 제어 가능
  2. next() : 데이터 획득
  • 목적
    • 데이터를 미리 만들지 않는다
    • 필요할때 필요한 만큼 생성 ➜ 메모리 최적화
      -ex.01) list()로 1억개 맴버 생성 ➜ 먹통, 메모리풀
      -ex.02) numpy의 array()로 1억개 맴버 생성
      1초도 안걸림, 메모리 유지
           << 차이 >>
           (1) 제너레이터 사용 여부
           (2) 고속연산
  • 용도: 메모리 최적화, 알고리즘 구현시 자주 사용되는 방식
    Ex.01-A
      ⤷ *동기식 코드 : 차례로 수행. ( 즉, 위의 코드가 끝나지 않으면 아래 코드 수행 X )
         *비동기식 : 위의 코드가 마무리 되지 않아도 다음 코드 진행. 
                                               Ex. js, node, .. 
    	
                       🔽🔽🔽
    Ex.01-B > yield 적용하여 제러레이터 구성
    Ex.02-A > range() 함수
                     🔽🔽🔽
    Ex.02-B > range() + 제너레이터 문법 적용

피노나치 수열

: 앞에 두수의 더한값이 그 다음값이 되는 수열

  0
  1
  1
  2
  3
  5
  8
  13
  21
  • 제시값
         f0 = 0
         f1 = 1

규칙

     n >= 2 일때
     fn = f(n-1) + f(n-2)
     n=2라면
     f2 = f(1) + f(0)
     f2 = 1 + 0
     f2 = 1

Ex.01 > 위 규칙을 따라 피노나치 수열을 만드는 함수를 만드시오

0개의 댓글