Что делает функция len() в Python и как ей пользоваться
Считаем символы в строке, элементы в списке и даже звёзды на небе.


Иллюстрация: Оля Ежак для Skillbox Media
Функция len() в Python — это встроенная функция, которая подсчитывает количество элементов в разных типах данных. Например, с её помощью можно быстро узнать, сколько букв в слове «программирование» или сколько чисел в списке [1, 2, 3, 4, 5]. «Встроенная» означает, что она доступна сразу после установки Python и её не нужно импортировать или подключать.
В этой статье мы разберём синтаксис функции len() и посмотрим на различные примеры её использования. Затем вы сможете выполнить несколько простых заданий, чтобы закрепить материал на практике.
Содержание
- Считаем количество элементов в объекте
- Используем функцию len() в логике программы
- Применяем len() с другими функциями
- Задача на подсчёт уникальных значений
- Задача на проверку количества наблюдений
- Задача на фильтрацию и подсчёт
Синтаксис и возможные ошибки
Функция len() принимает один аргумент и в общем виде записывается так:
len(объект)
Вы указываете имя функции, затем ставите круглые скобки и передаёте внутрь объект, длину которого хотите узнать. Функция работает с любыми объектами, которые поддерживают подсчёт количества элементов: строками, списками, кортежами, словарями и другими подходящими типами данных.
Но если вы попробуете вычислить длину целого числа, Python выдаст ошибку:
len(404) # TypeError: object of type 'int' has no len()
Это происходит потому, что в Python числа относятся к простым, атомарным типам данных — они представляют собой единичные значения, а не последовательности. То есть 404 — это просто одно значение, которое не состоит из подэлементов, поэтому к нему нельзя применить len(). А вот строка "404" состоит из трёх символов, и её вызов len ("404") вернёт 3.
Также len() выдаст ошибку, если вы вообще забудете передать аргументы:
len() # TypeError: len() takes exactly one argument (0 given)
Или передадите больше одного аргумента:
len("привет", "мир") # TypeError: len() takes exactly one argument (2 given)
И ещё вы должны знать, что, начиная с Python 3.8, в официальной документации синтаксис функции len() может выглядеть вот так:
len(объект, /)
Слеш / означает, что аргумент функции должен быть позиционным — его нельзя передавать по имени параметра. Другими словами, так писать можно:
print(len("привет")) # 6
А такая запись приведёт к ошибке:
print(len(obj="привет")) # TypeError: len() takes no keyword arguments
Функция len() не принимает именованные аргументы. Такое ограничение помогает избежать случайных ошибок и немного ускоряет выполнение встроенных функций. На практике эта особенность вам не помешает — просто помните, что len() вызывается с одним аргументом, без указания имени.
Примеры использования функции len()
В этом разделе мы рассмотрим три основных сценария применения функции len(): когда нужно просто посчитать элементы, когда она используется в логике программы и когда она применяется в связке с другими функциями.
Чтобы лучше запомнить материал, рекомендуем переписать все примеры вручную. Если вы новичок, то для работы вам нужно установить Python на компьютер и создать файл в любом редакторе кода. Или вы можете ничего не устанавливать и воспользоваться бесплатным онлайн-сервисом Google Colab.

Читайте также:
Считаем количество элементов в объекте
Это базовый и самый распространённый способ применения функции len() — посчитать, сколько элементов содержится в каком-либо объекте.
Для начала давайте посчитаем числа в списке:
numbers_list = [10, 20, 30, 40, 50]
print(len(numbers_list)) # 5
То же самое работает и с кортежем — неизменяемым набором значений, который записывается в круглых скобках:
point = (45.0, 90.0)
print(len(point)) # 2
А вот пример с диапазоном, который мы получили с помощью функции range():
numbers_range = range(100)
print(len(numbers_range)) # 100
# В диапазон входят числа от 0 до 99 (включительно)
Рекомендуем самостоятельно попробовать посчитать длину других объектов — принцип везде один и тот же: передаёте len() нужный объект и получаете количество его элементов. Например, вызовите len() для строки или для словаря.
Используем функцию len() в логике программы
Функция len() часто встречается в условных операторах и циклах, когда нужно принимать решения на основе количества элементов. С её помощью можно проверить, пуст ли список, узнать размер структуры данных или выполнить определённые действия в зависимости от длины объекта.
Например, когда пользователь отправляет форму или что-то ищет через поиск в системе, мы можем использовать len() для проверки результатов. Если функция возвращает 0, это значит, что данных нет: форма пуста или ничего не найдено. В таком случае нам стоит показать соответствующее сообщение:
my_list = []
if len(my_list) == 0:
print("Показываем сообщение: «Ничего не найдено»")
else:
print("Продолжаем обработку данных")
Также в программах вам могут встречаться вложенные списки — например, когда данные организованы в виде таблицы или матрицы. В таких случаях функция len() позволяет посчитать, сколько вложенных списков находится внутри внешнего (то есть сколько в нём строк), узнать длину одной строки (количество столбцов), а также общее количество элементов всей структуры:
matrix = [
[1, 2], # первая строка
[3, 4], # вторая строка
[5, 6] # третья строка
]
# Считаем количество строк
print(len(matrix)) # 3
# Считаем количество столбцов
print(len(matrix[0])) # 2
# Считаем общее количество элементов во всей матрице
print(sum(len(row) for row in matrix)) # 6

Читайте также:
Ещё вы можете создавать собственные классы и сделать так, чтобы с ними работала функция len(). Для этого достаточно добавить в класс специальный метод __len__(). Давайте создадим простую коробку и положим в неё фрукты:
# Создаём класс Box
class Box:
def __init__(self, items):
self.items = items # Сохраняем список предметов
def __len__(self):
return len(self.items) # Возвращаем количество предметов
# Создаём коробку с фруктами
b = Box(["яблоко", "банан", "груша"])
# Вызываем функцию len(), и Python автоматически использует метод __len__()
print(len(b)) # 3
Применяем len() с другими функциями
Существует множество сценариев, в которых len() помогает решать более сложные задачи. Например, можно найти среднее значение в списке чисел:
scores = [80, 90, 70, 10, 30, 50]
average = sum(scores) / len(scores)
print(average) # 55.0
Определить самые короткие и длинные строки:
words = ["кот", "слон", "носорог", "бегемот", "жираф", "медведь", "заяц", "лиса", "волк", "тигр", "лев", "пантера", "леопард", "рысь", "белка", "ёж", "олень", "лось", "кабан", "барсук"]
shortest = min(words, key=len)
longest = max(words, key=len)
print(shortest) # ёж
print(longest) # носорог
Или отсортировать слова по их длине:
languages = [
"Python", "C", "JavaScript", "Go", "Rust", "Java",
"Kotlin", "TypeScript", "Ruby", "Swift", "Haskell", "Perl"
]
sorted_languages = sorted(languages, key=len)
print(sorted_languages)
Результат вывода:
['C', 'Go', 'Rust', 'Java', 'Ruby', 'Perl', 'Swift', 'Python', 'Kotlin', 'Haskell', 'JavaScript', 'TypeScript']
Мы рассмотрели, как len() может сочетаться с функциями sum(), min(), max() и sorted(). Но этим её применение не ограничивается — вы можете использовать len() для фильтрации данных, генерации списков и прочего.
Задания для закрепления темы
Если вы только начинаете изучать Python и функцию len(), этот раздел можно пока пропустить. Но если вы уже разобрались со всеми примерами из этой статьи, уверены — с тремя следующими задачами вы точно справитесь.
Задача на подсчёт уникальных значений
Вам достался список покупок, в который часть товаров попала несколько раз. Попробуйте выяснить, какое количество уникальных товаров в списке:
shopping_list = ["хлеб", "молоко", "сыр", "хлеб", "сыр", "яблоки", "масло", "яйца", "хлеб", "молоко", "сыр", "яблоки", "масло", "печенье", "сыр", "молоко", "яйца", "печенье", "колбаса", "колбаса"]
Решение
С помощью функции set() мы можем преобразовать список во множество и убрать повторяющиеся элементы. Затем нам останется только их сосчитать:
shopping_list = ["хлеб", "молоко", "сыр", "хлеб", "сыр", "яблоки", "масло", "яйца", "хлеб", "молоко", "сыр", "яблоки", "масло", "печенье", "сыр", "молоко", "яйца", "печенье", "колбаса", "колбаса"]
unique_items = set(shopping_list)
print(len(unique_items))
Задача на проверку количества наблюдений
Напишите программу для учёта звёзд на ночном небе. Если наблюдений нет, программа должна вывести сообщение: «Сегодня звёзд не видно». Если в списке есть хотя бы одна звезда, выведите: «Наблюдений: X», где X — количество звёзд. А если звёзд больше 10, напечатайте: «Сегодня звездопад!»
Для проверки программы используйте следующие входные данные:
observed_stars = ["Сириус", "Арктур", "Вега", "Ригель", "Капелла", "Альдебаран", "Бетельгейзе", "Поллукс", "Процион", "Фомальгаут", "Антарес"]
Решение
Чтобы решить эту задачу, мы используем функцию len() вместе с условным оператором if-elif-else для проверки количества звёзд в списке. И далее в зависимости от полученного результата просто выведем нужное сообщение:
observed_stars = ["Сириус", "Арктур", "Вега", "Ригель", "Капелла", "Альдебаран", "Бетельгейзе", "Поллукс", "Процион", "Фомальгаут", "Антарес"]
if len(observed_stars) == 0:
print("Сегодня звёзд не видно")
elif len(observed_stars) > 10:
print("Сегодня звездопад!")
else:
print(f"Наблюдений: {len(observed_stars)}")

Читайте также:
Задача на фильтрацию и подсчёт
Представьте, что вы работаете в техподдержке для Python-разработчиков. Каждый день вам приходят десятки сообщений от новичков с просьбами о помощи. Чтобы больше успевать, вам нужно быстро выделять только содержательные обращения — те, в которых не менее 50 символов. Напишите программу, которая будет находить такие сообщения и считать их количество.
Вот пример потока входящих сообщений:
messages = [
"У меня возникла серьёзная проблема при работе с многопоточностью в Python. Потоки блокируют друг друга, и программа зависает. Помогите разобраться с deadlock",
"Спасибо за помощь!",
"При работе с Django не получается настроить аутентификацию пользователей и систему разрешений. Постоянно получаю ошибку доступа",
"ок",
"Пытаюсь разобраться с обработкой больших данных в pandas, но DataFrame занимает слишком много памяти. Как оптимизировать работу?",
"перезвоните мне позже",
"При развёртывании Flask-приложения на production-сервере возникают проблемы с WSGI и nginx. Требуется помощь в настройке",
"всем привет)",
"как дела?",
"пока!"
]
Решение
Для фильтрации сообщений мы можем использовать генератор списка и проверить длину каждого сообщения с помощью len(). Затем нам останется подсчитать количество отфильтрованных элементов и вывести результат:
messages = [
"У меня возникла серьёзная проблема при работе с многопоточностью в Python. Потоки блокируют друг друга, и программа зависает. Помогите разобраться с deadlock",
"Спасибо за помощь!",
"При работе с Django не получается настроить аутентификацию пользователей и систему разрешений. Постоянно получаю ошибку доступа",
"ок",
"Пытаюсь разобраться с обработкой больших данных в pandas, но DataFrame занимает слишком много памяти. Как оптимизировать работу?",
"перезвоните мне позже",
"При развёртывании Flask-приложения на production-сервере возникают проблемы с WSGI и nginx. Требуется помощь в настройке",
"всем привет)",
"как дела?",
"пока!"
]
detailed_messages = [msg for msg in messages if len(msg) >= 50]
print(len(detailed_messages)) # 4

Читайте также:
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!