파이썬에서 이터레이터를 사용한 리스트 생성

Beginner

This tutorial is from open-source community. Access the source code

소개

Python 에서는 다양한 방법으로 리스트를 생성할 수 있습니다. 그 중 하나는 이터레이터 함수와 초기 시드 값을 사용하는 것입니다. 이 챌린지에서는 이터레이터 함수와 초기 시드 값을 사용하여 리스트를 구축하는 과제를 수행하게 됩니다.

Unfold 리스트

귀하의 과제는 이터레이터 함수와 초기 시드 값을 인수로 사용하는 unfold 함수를 구현하는 것입니다. 이터레이터 함수는 하나의 인수 (seed) 를 받으며, 항상 두 개의 요소 ([value, nextSeed]) 를 가진 리스트를 반환하거나 종료하기 위해 False를 반환해야 합니다. unfold 함수는 while 루프를 사용하여 이터레이터 함수를 호출하고 valueFalse를 반환할 때까지 yield하는 제너레이터 함수 fn_generator를 사용해야 합니다. 마지막으로, unfold 함수는 리스트 컴프리헨션 (list comprehension) 을 사용하여 이터레이터 함수를 사용하여 제너레이터에 의해 생성된 리스트를 반환해야 합니다.

unfold 함수를 구현하십시오:

def unfold(fn, seed):
    ## your code here

입력

  • 하나의 인수 (seed) 를 받으며, 항상 두 개의 요소 ([value, nextSeed]) 를 가진 리스트를 반환하거나 종료하기 위해 False를 반환해야 하는 이터레이터 함수 fn.
  • 초기 시드 값 seed.

출력

  • 이터레이터 함수를 사용하여 제너레이터에 의해 생성된 리스트.
def unfold(fn, seed):
  def fn_generator(val):
    while True:
      val = fn(val[1])
      if val == False: break
      yield val[0]
  return [i for i in fn_generator([None, seed])]
f = lambda n: False if n > 50 else [-n, n + 10]
unfold(f, 10) ## [-10, -20, -30, -40, -50]

요약

이 챌린지에서는 이터레이터 함수와 초기 시드 값을 사용하여 리스트를 구축하는 방법을 배웠습니다. 이터레이터 함수와 초기 시드 값을 인수로 받아 이터레이터 함수를 사용하여 제너레이터에 의해 생성된 리스트를 반환하는 unfold 함수를 구현했습니다.