2012-09-09 11 views
6

可能性の重複:
Cost of len() functionPythonの `len()`関数のbig-o表記法は何ですか?

は、リスト内のオブジェクトの上にlen()反復処理を行い、その後、その数を返しますか?したがって、それを与えるO(n)

それとも....

Pythonのリストはlen()が呼び出されたときに、単にこの「カウント」を返し、それに追加して、それから削除されているすべてのオブジェクトのカウントを保持していますか?したがって、それを与えるO(1)

+1

これは 'O(1)'です。これはあなたが必要とするものです:http://wiki.python.org/moin/TimeComplexity –

答えて

9

Pythonリストには、独自の長さが分かっています。 lenO(1) timeとなります。 Lists are actually arrays、Lispのようなリンクリストではなく、lengthが線形時間を要します。

+2

"proof" http://wiki.python.org/moin/TimeComplexity – mgilson

8

__len__()を定義するすべての組み込みオブジェクトでは、O(1)になります。独自のオブジェクトに__len__()を実装すると、それは何かである可能性があります。

関連する問題