Функция len() для определения размера данных

Раздел: Работа с данными -> Методы строк/списков

Вывод длины строк и списков в Python

Основной способ:

Для получения длины любого итерируемого объекта (строка, список, кортеж, словарь) используется встроенная функция len(). Результат можно сразу вывести на экран с помощью print().

text = "Привет, мир"
print(len(text))  # 11

Python print len (вывод длины в python)

11

Функция len() работает за O(1), так как длина хранится во внутренней структуре объекта. Это самый эффективный способ.

Как узнать длину строки?

Строка - последовательность символов. len() возвращает количество символов, включая пробелы и знаки препинания.

s = "Python"
print(len(s))  # 6
6

Проблема:

Если строка содержит символы Unicode (например, эмодзи), длина считается в символах, а не в байтах. Некоторые символы занимают несколько байт, но len() все равно покажет 1. Для подсчёта байт используется len(s.encode()).

Как вычислить длину списка?

Список - упорядоченная коллекция элементов. len() возвращает количество элементов первого уровня.

lst = [10, 20, 30, 40]
print(len(lst))  # 4
4
Ошибка TypeError возникает, если передать объект, не поддерживающий __len__, например, число или None. Перед вызовом len() стоит проверить тип или использовать try-except.
Как вывести длину вместе с поясняющим текстом?

Часто требуется отформатировать вывод. Используйте f-строки или конкатенацию.

name = "Анна"
print(f"Длина имени {name}: {len(name)} символа")
Длина имени Анна: 4 символа
Конкатенация строк с разными типами: print("Длина: " + str(len(name))) - легко забыть преобразовать число в строку, что вызовет TypeError.

Как обработать случай, когда объект равен None?

Прямой вызов len(None) приводит к TypeError. Лучше выполнить проверку.

data = None
if data is not None:
    print(len(data))
else:
    print("Объект отсутствует")
Объект отсутствует

Как определить длину вложенных структур?

len() считает только элементы верхнего уровня. Для подсчёта всех элементов внутри вложенных списков требуется рекурсия или flatten.

nested = [[1, 2], [3, 4, 5]]
print(len(nested))  # 2 (два вложенных списка)
# Общее количество чисел: sum(len(sublist) for sublist in nested)  # 5
2
Путаница между длиной внешнего списка и общим числом элементов - частая ошибка новичков.

Расширенные примеры использования len()

Ниже приведены нестандартные сценарии и подробные пояснения к каждому шагу.

Сравнение длины нескольких строк

Пример
strings = ["короткая", "длинная строка", "средняя"]
lengths = {s: len(s) for s in strings}
print(lengths)
{'короткая': 8, 'длинная строка': 14, 'средняя': 7}

Генератор словаря позволяет быстро сопоставить строку и её длину.

Поиск самого длинного слова в списке

Пример
words = ["яблоко", "апельсин", "вишня", "гранат"]
longest = max(words, key=len)
print(longest, len(longest))
апельсин 8

Параметр key=len в функции max() сравнивает элементы по их длине.

Проверка, является ли строка палиндромом

Пример
def is_palindrome(s):
    s_clean = s.replace(" ", "").lower()
    return s_clean == s_clean[::-1]

test = "А роза упала на лапу Азора"
if is_palindrome(test):
    print(f"Строка длиной {len(test)} символов является палиндромом")
Строка длиной 23 символов является палиндромом

Здесь len() используется только для вывода, а не для логики проверки.

Использование len() в list comprehension для фильтрации

Пример
fruits = ["киви", "манго", "яблоко", "груша"]
long_fruits = [f for f in fruits if len(f) > 5]
print(long_fruits)
['яблоко', 'апельсин']  # апельсин есть? В исходном списке его не было. Исправим: добавим.

На самом деле в списке нет 'апельсин', поэтому результат будет ['яблоко']. Данный пример демонстрирует синтаксис.

Длина строки с учётом байт (разные кодировки)

Пример
emoji = "?"
print("Символов:", len(emoji))
print("Байт в UTF-8:", len(emoji.encode("utf-8")))
Символов: 1
Байт в UTF-8: 4

Для подсчёта фактического объёма памяти, занимаемого строкой, используется encode().

Обработка ошибки при вызове len() на неитерируемом объекте

Пример
def safe_len(obj):
    try:
        return len(obj)
    except TypeError:
        return None

values = [42, [1,2,3], "abc", None]
for v in values:
    print(f"{v!r}: {safe_len(v)}")
42: None
[1, 2, 3]: 3
'abc': 3
None: None

Функция safe_len предотвращает падение программы и может вернуть None или другое значение по умолчанию.

Подсчёт длины вложенных списков с помощью рекурсии (всех элементов)

Пример
def deep_len(obj):
    if isinstance(obj, list):
        return sum(deep_len(item) for item in obj)
    else:
        return 1

nested = [1, [2, [3, 4]], 5]
print("Глубинная длина:", deep_len(nested))
Глубинная длина: 5

Каждый не-списочный элемент считается за 1, сумма рекурсивно обходится.

Вывод длины в Python - comments

En
Python print len (python)