Pop-11からPythonと同等のpdtolistを作成するにはどうすればよいですか?
(たとえば)整数を一度に1つずつ返すgというジェネレーターがあるとします。リストの現在の終わりを超える値を要求すると、自動的に大きくなるリストを作成したいと思います。例えば:
print a # => [ 0, 1, 2, g]
print a[0] # => 0
print a[1] # => 1
print a[2] # => 2
# (obvious enough up to here)
print a[6] # => 6
print a # => [ 0, 1, 2, 3, 4, 5, 6, g]
# list has automatically expanded
a = a[4:] # discard some previous values
print a # => [ 4, 5, 6, g]
print a[0] # => 4
用語-誤解の可能性を予測するために:リストは「動的配列」ですが、それは私が意味することではありません。もっと抽象的な意味での「ダイナミックリスト」が欲しいのですが。
動機をよりよく説明するために、処理する999999999アイテムがあるとします。それらすべてを(通常のリストの)メモリに一度に収めようとするのは難しいでしょう。ジェネレーターは、問題のその部分を一度に1つずつ提示することで解決します。それぞれがオンデマンドで作成されるか、ディスクから個別に読み取られます。しかし、処理中に、現在の値だけでなく、最近の値を参照したいとしますか?別のリストにある最後の(たとえば)10個の値を思い出すことができます。ただし、動的リストは自動的に記憶されるため、より優れています。