Как получить размер списка

items = [] items.append("apple") items.append("orange") items.append("banana") # FAKE METHOD:: items.amount() # Should return 3 

Как получить количество элементов в списке?

7 Solutions collect form web for “Как получить размер списка”

Функция len() может использоваться с множеством типов в Python – как встроенными типами, так и типами библиотек.

 >>> len([1,2,3]) 3 

Как получить размер списка?

Чтобы найти размер списка, используйте встроенную функцию, len :

 items = [] items.append("apple") items.append("orange") items.append("banana") 

И сейчас:

 len(items) 

возвращается 3.

Из документов

len(s)

Возвращает длину (количество элементов) объекта. Аргументом может быть последовательность (например, строка, байты, кортеж, список или диапазон) или коллекция (например, словарь, набор или замороженный набор).

len реализуется с __len__ , из документов модели данных:

object.__len__(self)

Вызывается для реализации встроенной функции len() . Должен возвращать длину объекта, целое число> = 0. Кроме того, объект, который не определяет __nonzero__() [в Python 2 или __bool__() в Python 3] и метод __len__() возвращает ноль, считается быть ложным в булевом контексте.

И мы также видим, что __len__ – это метод списков:

 items.__len__() 

возвращается 3.

Встроенные типы вы можете получить длину (длину)

И на самом деле мы видим, что мы можем получить эту информацию для всех описанных типов:

 >>> all(hasattr(cls, '__len__') for cls in (str, bytes, tuple, list, xrange, dict, set, frozenset)) True 

Хотя это может и не быть полезным из-за того, что было бы более разумно использовать функциональность «из коробки», довольно простой взлом заключался бы в создании класса с свойством length :

 class slist(list): @property def length(self): return len(self) 

Вы можете использовать его так:

 >>> l = slist(range(10)) >>> l.length 10 >>> print l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

По сути, это точно идентично объекту списка, с дополнительным преимуществом наличия свойства length совместимого с ООП.

Как всегда, ваш пробег может отличаться.

Отвечая на ваш вопрос в качестве примеров, приведенных ранее:

 items = [] items.append("apple") items.append("orange") items.append("banana") print items.__len__() 

Помимо len вы также можете использовать operator.length_hint (требуется python 3.4+). Для обычного list оба эквивалентны, но length_hint позволяет получить длину списка-итератора, который может быть полезен при определенных обстоятельствах:

 >>> 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 по определению является лишь «подсказкой», поэтому большую часть времени лучше.

Я видел несколько ответов, предлагающих доступ к __len__ . Это хорошо, когда речь идет о встроенных классах, таких как list но это может привести к проблемам с пользовательскими классами, потому что lenlength_hint ) реализуют некоторые проверки безопасности. Например, обе не позволяют отрицательные длины или длины, превышающие определенное значение (значение sys.maxsize ). Поэтому всегда лучше использовать функцию len вместо метода __len__ !

  new_list_length = list(x for x in range(10)).__len__() 

Если вам нужно знать ИСПОЛЬЗОВАНИЕ ПАМЯТИ заданного типа, вы можете использовать функцию sys.getsizeof

 >>> from sys import getsizeof >>> l = [] >>> getsizeof(l) 64 >>> l.append(10) >>> getsizeof(l) 96 >>> getsizeof(10) 28 >>> l.append(True) >>> getsizeof(l) 96 >>> getsizeof(True) 28 >>> getsizeof("toto") 53 >>> getsizeof(10.5) 24 

Эта функция отлично подходит для собственных типов python https://docs.python.org/dev/library/sys.html#sys.getsizeof

Но если вам нужно проанализировать сложные структуры, посмотрите на этот рецепт .

  • sys.getsizeof (list) возвращает меньше суммы своих элементов
  • Как сопоставить функцию с тройным вложенным списком и сохранить тройной вложенный список неповрежденным?
  • Поиск равных значений из списка списка кортежей в Python
  • создание словарей для отображения порядка ранжирования
  • Добавление в 2D-списки в Python
  • Каков самый быстрый способ добавить данные в список без дублирования в python (2.5)
  • Список Python и для каждого доступа (Find / Replace во встроенном списке)
  • Python: в чем разница между (1,2,3) и , и когда я должен использовать их?
  • Python - лучший язык программирования в мире.