Pythonのリスト内包表記はメモリ効率の良い方法で減少しますか?

StackOverflow https://stackoverflow.com/questions/5349755

  •  27-10-2019
  •  | 
  •  

質問

私はPythonの初心者です。これが私の最初の投稿なので、厳しすぎないでください:)。私は最近Pythonで遊んでいて、次のようなものがあるかどうか疑問に思っていました ジェネラコディセタグプレ

Pythonは最初にすべての要素のリストを作成し、次に最大値を見つけてO(2n)時間になるか、またはΘ(n)を繰り返しているときに最大値を追跡します。また、Python3では範囲が異なるため(反復可能であるため)、Python2とは異なりますか?

役に立ちましたか?

解決

この例では、Pythonが最初にリスト全体を作成します。それを避けたい場合は、代わりにジェネレータ式を使用できます: ジェネラコディセタグプレ

または単に: ジェネラコディセタグプレ

もちろん(Python 2では)range自体がリスト全体を作成するため、この場合に本当に必要なのは次のとおりです。 ジェネラコディセタグプレ

ただし、かかる時間に関しては、これらの式はすべて同じ複雑さを持っています。重要な違いは、最後のものはO(1)スペースを必要とするのに対し、他のものはO(n)スペースを必要とすることです。

他のヒント

リスト内包表記は常にリストを生成します(何かが例外をスローしない限り)。ほとんどの場合、代わりにジェネックスを使用することをお勧めします。 ジェネラコディセタグプレ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top