ふかっせいけいさん
1615 ワード
「緩和計算法」(Lazy evaluation)は、計算を結果値の計算が必要になるまで遅らせる方法です.遅延計算法と最小計算法の2つの関連項目がある.
ゆとりアルゴリズムを用いた言語には,「名前で呼ぶ」あるいは「必要に応じて呼ぶ」方法がある.
ソース:https://ko.wikipedia.org/wiki/%EB%8A%90%EA%B8%8B%ED%95%9C_%EA%B3%84%EC%82%B0%EB%B2%95
completion listがlazy return()を一度に実行するのが見えます.
generator expは1回実行できます.
最初は、一度にリストに保存して実行することを理解します.
generatorはlazy returnとprint iterが1回ずつ実行されると考えているだけで、理解していません.以下のコードを参照し理解した.
真ん中にcheckが印刷されています.
「check」は、すべてのlazy returnを実行した後にprint iterを実行することを理解します.
generator expは、lazy returnが呼び出されるたびに「check」が実行されることを発見しました.
ゆとりアルゴリズムを用いた言語には,「名前で呼ぶ」あるいは「必要に応じて呼ぶ」方法がある.
ソース:https://ko.wikipedia.org/wiki/%EB%8A%90%EA%B8%8B%ED%95%9C_%EA%B3%84%EC%82%B0%EB%B2%95
import time
def print_iter(iter):
for element in iter:
print(element)
def lazy_return(num):
print("sleep 1s")
time.sleep(1)
return num
print("comprehension_list=")
comprehension_list = [ lazy_return(i) for i in L ]
print_iter(comprehension_list)
print("generator_exp=")
generator_exp = ( lazy_return(i) for i in L )
print_iter(generator_exp)
実行結果completion listがlazy return()を一度に実行するのが見えます.
generator expは1回実行できます.
最初は、一度にリストに保存して実行することを理解します.
generatorはlazy returnとprint iterが1回ずつ実行されると考えているだけで、理解していません.以下のコードを参照し理解した.
print("comprehension_list=")
comprehension_list = [ lazy_return(i) for i in L ]
print("check")
print_iter(comprehension_list)
print("generator_exp=")
generator_exp = ( lazy_return(i) for i in L )
print("check")
print_iter(generator_exp)
実行結果真ん中にcheckが印刷されています.
「check」は、すべてのlazy returnを実行した後にprint iterを実行することを理解します.
generator expは、lazy returnが呼び出されるたびに「check」が実行されることを発見しました.
Reference
この問題について(ふかっせいけいさん), 我々は、より多くの情報をここで見つけました https://velog.io/@cj4207/lazy-evaluation-느긋한-계산법テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol