[우리FISA 5기] AI엔지니어링 2주차 - 005일차

이정환·2025년 7월 13일

우리FISA

목록 보기
3/12

[25년 7월 7일] - 005일차 - Iterable

리스트 컴프리헨션

🔗 [Python의 꽃] 리스트 컴프리헨션(List Comprehension) - codingDNA

  • 한 줄 내에 직관적으로 리스트를 생성하는 문법
  • 반복문을 사용하는 것보다 빠르다.

for문/append()와 리스트 컴프리헨션 실행 속도 비교

  • 다음과 같이 for문을 중첩하고 if문으로 조건과 함께 사용하는 것도 가능하다.
[i * j for i in range(10) for j in range(10) if i < j]

map

🔗 Python의 map() filter() reduce() 사용 방법 정리 - GONIGONI!

map(function, iterable)
  • 위와 같은 문법으로 사용할 수 있는 내장 함수로, 전달 함수에 반복 객체의 각 요소를 반복적으로 입력한 결과를 반환한다.
  • 코딩 테스트 입력 처리 시 다음과 같이 사용할 수 있다.
n, m = map(int, input().split()
arr = [*map(int, input().split())]

filter

filter(function, iterable)
  • map과 동일한 인자로 전달된 함수에 요소를 반복적으로 입력받지만, 함수의 반환값이 True인 입력만 반환한다.
  • 아래와 같이 map은 반환값을 그대로 반환하지만, filterTrue로 평가된 입력값을 반환하는 것을 알 수 있다.

    map, filter 실행 결과 비교

reduce

from functools import reduce
reduce(function, iterable, initializer=None)
  • 전달된 함수에 반복 객체의 요소를 입력하여 이전 결과에 누적하여 결과를 반환한다.
  • 1부터 1,000,000까지 누적합을 구하는 코드로 실행 시간을 비교하였다.

    reduce, for문 실행 결과 비교

💡내부적인 병렬처리를 기대했지만 실행시간이 비슷했다.

reduce 병렬 처리 패턴 🔗Common Parallel Patterns - Springer Nature Link

Generator

🔗 파이썬의 yield 키워드와 제너레이터(generator) - DaleSeo

  • Python yield 키워드를 이용한 특별한 함수로 반복 가능 객체인 generator를 반환한다.
  • 지연 평가로 메모리를 절약할 수 있다.
  • 기존 함수 선언과 동일하게 선언하고, 인자를 넘겨 호출하면 generator 객체를 반환한다.
  • 반복 횟수를 의미하는 인자 n에 5를 입력하여 호출하고, 반복하면 다섯 번 반환 후 종료됨을 확인할 수 있다.

문자 generator

  • next() 내장 함수로 반복 객체의 다음 요소를 반환 받을 수 있다.

  • 더 이상 yield 할 수 없다면 StopIteration 에러를 발생시킨다.

  • 다음과 같이 끝없이 무언가를 생성하는 형식으로 작성할 수 있다.

from random import randint

def generate_char():
    '''
    랜덤 영어 소문자 반환
    '''
    while True:
        yield chr(randint(97, 122))

0개의 댓글