22

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

26

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

У меня есть список items, который выглядит следующим образом:

items = ["apple", "orange", "banana"]

Как я могу узнать, сколько элементов в этом списке? Я ожидаю, что должно быть 3 элемента. Какие есть способы получить это значение в Python?

4 ответ(ов)

0

Хотя это может не быть полезным, так как было бы логичнее иметь такую функциональность "из коробки", довольно простым решением будет создать класс с свойством 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.

Как всегда, учитывайте, что ваш опыт может быть различным.

0

Отвечая на ваш вопрос, вот пример кода, который показывает, как добавить элементы в список и получить его длину:

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

print(items.__len__())

В этом примере мы создаем пустой список items, добавляем в него три фрукта и затем выводим длину списка с помощью метода __len__(). Вывод будет равен 3. Однако, в Python более "питоническим" способом узнать длину списка является использование встроенной функции len(), как показано ниже:

print(len(items))

Это будет эквивалентно предыдущему примеру, но более читаемо и рекомендуется для использования в коде.

0

Чтобы получить количество элементов в любых последовательных объектах в Python, вашим основным методом будет len(), например:

a = range(1000) # диапазон
b = 'abcdefghijklmnopqrstuvwxyz' # строка
c = [10, 20, 30] # список
d = (30, 40, 50, 60, 70) # кортеж
e = {11, 21, 31, 41} # множество

Метод len() может работать со всеми вышеупомянутыми типами данных, потому что они являются итерируемыми, т.е. вы можете по ним итерироваться.

all_var = [a, b, c, d, e] # Все переменные сохранены в список
for var in all_var:
    print(len(var))

Пример упрощенного определения метода len():

def len(iterable, /):
    total = 0
    for i in iterable:
        total += 1
    return total

Этот код показывает, как вы можете подсчитать количество элементов в различных итерируемых объектах в Python, используя встроенный метод len().

0

Существует три способа найти длину элементов в списке. Я сравню эти три метода с анализом производительности.

Метод 1: Использование len()

items = []
items.append("яблоко")
items.append("апельсин")
items.append("банан")

print(len(items))

вывод:

3

Метод 2: Наивный метод подсчета

items = []
items.append("яблоко")
items.append("апельсин")
items.append("банан")

counter = 0
for i in items:
    counter += 1

print(counter)

вывод:

3

Метод 3: Использование length_hint()

items = []
items.append("яблоко")
items.append("апельсин")
items.append("банан")

from operator import length_hint
list_len_hint = length_hint(items)
print(list_len_hint)

вывод:

3

Анализ производительности – Наивный метод против len() и length_hint()

Примечание: Чтобы произвести сравнение, я превращу входной список в большой набор, что даст хорошую разницу во времени для сравнения методов.

items = list(range(100000000))

# Анализ производительности
from operator import length_hint
import time

# Измерение длины списка
# с использованием цикла
# Инициализация счетчика

start_time_naive = time.time()
counter = 0
for i in items:
    # инкрементирование счетчика
    counter += 1
end_time_naive = str(time.time() - start_time_naive)

# Измерение длины списка
# с использованием len()
start_time_len = time.time()
list_len = len(items)
end_time_len = str(time.time() - start_time_len)

# Измерение длины списка
# с использованием length_hint()
start_time_hint = time.time()
list_len_hint = length_hint(items)
end_time_hint = str(time.time() - start_time_hint)

# Вывод времени выполнения каждого метода
print("Время, затраченное на наивный метод: " + end_time_naive)
print("Время, затраченное на len(): " + end_time_len)
print("Время, затраченное на length_hint(): " + end_time_hint)

Вывод:

Время, затраченное на наивный метод: 7.536813735961914
Время, затраченное на len(): 0.0
Время, затраченное на length_hint(): 0.0

Заключение

Явно видно, что время, затраченное на наивный метод, значительно больше по сравнению с двумя другими методами. Поэтому использование len() и length_hint() является наилучшим выбором.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь