と同等のPythonを作成するにはどうすればいいですか?pdtolistはPop-11からですか?自動的に展開される動的リスト
gという名前のジェネレータがあり、一度に1つずつ整数を返すとします。リストの現在の終わりを越えて値を要求すると、というリストが自動的に大きくなるように構成したいと思います。例:
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の値を思い出すことができます。しかし、動的リストは、自動的にそれらを覚えているので、より良いです。
リストの '__getitem__'メソッドをオーバーライドして' IndexError'をキャッチします。 –
あなたは 'L'をリストし、' L [999999999] 'を実行します - そのリストはその長さになるはずですか? –
はい、原則です。プログラマーに警告! –