1

私はPythonの初心者です。O(1) 時間でリストまたはタプルの長さを見つけることができるかどうか疑問に思っていました。(len() は O(n))

Cでは、次のように同様のことを達成できます。

int a[] = {1, 2, 3, 4 ,5};
printf("Length of Array a is :: %d\n", sizeof(a)/sizeof(a[0]));

上記の概念はアドレスで機能することを知っています。それがCで可能である理由ですが、私の理解では、Pythonはアドレスを扱いません。しかし、好奇心のためにこの質問をしたかったのです。

4

2 に答える 2

6

len()Python でのリストの呼び出しはO(1). ここを参照してください。

于 2012-09-12T03:07:27.840 に答える
3

これが C の O(1) で機能する理由は、「アドレス」を扱うためではなく、コンパイル時にサイズがわかっているためです。実際、動的に割り当てられた配列で sizeof() を使用すると、常にポインターのサイズが取得されます。

Python では len() を使いたいのですが。

于 2012-09-12T03:08:47.747 に答える