On 10/18/2012 1:23 PM, Demian Brecht wrote:
When len() is called passing an immutable built-in type (such as a string), I'd assume that the overhead in doing so is simply a function call and there are no on-call calculations done. Is that correct?
See below.
I'd also assume that mutable built-in types (such as a bytearray) would cache their size internally as a side effect of mutation operations. Is
Or the length could be the difference of two pointers -- address of the first empty slot minus address of first item.
that correct? If so, is it safe to assume that at least all built-in types observe this behavior,
str, bytes, bytearrays, arrays, sets, frozensets, dicts, dictviews, and ranges should all return len in O(1) time. That includes the possibility of a subtraction as indicated above.
-- Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list