2012-09-09 33 views
6

thể trùng lặp:
Cost of len() functionKý hiệu lớn-o cho hàm `len()` trong Python là gì?

Liệu len() lặp trên các đối tượng trong một danh sách và sau đó trở về đếm của họ? Do đó, hãy cho nó O (n).

Hoặc ....

Có một danh sách python giữ một số lượng của bất kỳ đối tượng được nối thêm vào nó và ra khỏi nó và sau đó chỉ cần quay trở lại này "đếm" khi len() được gọi là? Vì vậy, hãy cho nó O (1).

+1

đó là 'O (1) 'đây là những gì bạn cần: http://wiki.python.org/moin/TimeComplexity –

Trả lời

9

Danh sách Python biết chiều dài của nó; len mất O(1) time. Lists are actually arrays, không phải danh sách được liên kết như trong Lisp, trong đó length mất thời gian tuyến tính.

+2

" bằng chứng "http://wiki.python.org/moin/TimeComplexity – mgilson

8

Đối với tất cả các đối tượng tích hợp xác định __len__(), nó sẽ là O (1). Nếu bạn thực hiện __len__() cho các đối tượng của riêng bạn, nó có thể là bất cứ điều gì.

Các vấn đề liên quan