items =  items.append("apple") items.append("orange") items.append("banana") # FAKE METHOD:: items.amount() # Should return 3
How do I get the number of elements in the list?pythonlist
While this may not be useful due to the fact that it'd make a lot more sense as being "out of the box" functionality, a fairly simple hack would be to build a class with a
class slist(list): @property def length(self): return len(self)
You can use it like so:
>>> l = slist(range(10)) >>> l.length 10 >>> print l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Essentially, it's exactly identical to a list object, with the added benefit of having an OOP-friendly
As always, your mileage may vary.
How to get the size of a list?
To find the size of a list, use the builtin function,
items =  items.append("apple") items.append("orange") items.append("banana")
Return the length (the number of items) of an object. The argument may be a sequence (such as a string, bytes, tuple, list, or range) or a collection (such as a dictionary, set, or frozen set).
len is implemented with
__len__, from the data model docs:
Called to implement the built-in function
len(). Should return the length of the object, an integer >= 0. Also, an object that doesn’t define a
__nonzero__()[in Python 2 or
__bool__()in Python 3] method and whose
__len__()method returns zero is considered to be false in a Boolean context.
And we can also see that
__len__ is a method of lists:
And in fact we see we can get this information for all of the described types:
>>> all(hasattr(cls, '__len__') for cls in (str, bytes, tuple, list, xrange, dict, set, frozenset)) True
lenas a value for a condition
Do not do:
if len(items): ...
if items: ...
I explain why here but in short, it is more readable and more performant.
Answering your question as the examples also given previously:
items =  items.append("apple") items.append("orange") items.append("banana") print items.__len__()
len you can also use
operator.length_hint (requires python 3.4+). For normal
list both are equivalent but
length_hint makes it possible to get the length of a list-iterator, which could be useful in certain circumstances:
>>> from operator import length_hint >>> l = ["apple", "orange", "banana"] >>> len(l) 3 >>> length_hint(l) 3 >>> list_iterator = iter(l) >>> len(list_iterator) TypeError: object of type 'list_iterator' has no len() >>> length_hint(list_iterator) 3
length_hint is by definition only a "hint", so most of the time
len is better.
I've seen several answers suggesting accessing
__len__. This is alright when dealing with built-in classes like
list but it could lead to problems with custom classes because
length_hint) implement some safety checks. For example both do not allow negative lengths or lengths that exceed a certain value (the
sys.maxsize value). So it's always safer to use the
len function instead of the
And for completeness, it is possible without using the
len() function (I would not condone this as a good option):
def count(list): item_count = 0 for item in list[:]: item_count = item_count + 1 return item_count count([1,2,3,4,5])
(the colon in
list[:] is implicit, therefore also optional)