Баннер мобильный (3) Пройти тест

Функция len() в Python: как узнать длину данных

Разбираем синтаксис и функционал на примерах

Инструкция

8 августа 2025

Поделиться

Скопировано
Функция len() в Python: как узнать длину данных

Содержание

    Краткое руководство по функции len() для подсчета элементов в списках, строках и других типах данных, с примерами кода.

    Что такое функция len() и для чего она нужна

    Функция len() возвращает количество элементов в объекте. Она работает с последовательностями (списки, строки, кортежи) и коллекциями (словари, множества). 

    На вход функция принимает объект, например список или строку, а возвращает целое число (int) — количество элементов. 

    Например, для списка [‘a’, ‘b’, ‘c’] функция len() вернет 3

    Когда объект пустой, например список без элементов [], функция вернет 0.

    Синтаксис и применение len()

    Функция len() принимает один аргумент — объект, а возвращает int:

    len(объект)

    Например:

    my_list = ['понедельник', 'вторник', 'среда']
    print(len(my_list))

    Вывод: 3

    Запуск команды в стандартной среде разработки IDLE
    Запуск команды в стандартной среде разработки IDLE

    Если копнуть глубже, то функция len() вызывает специальный метод __len__() объекта. Этот метод встроен в стандартные типы данных, такие как списки или строки, и возвращает их длину. Например, вызов len(my_list) равносилен вызову my_list.__len__().

    Альтернативы len()

    Без функции len() пришлось бы считать элементы вручную с помощью цикла for и счетчика (counter).

    Пример:

    my_list = [1, 2, 3]
    counter = 0
    for item in my_list:
        counter += 1
    print(counter)

    Вывод: 3

    Но в случаях, когда нужно посчитать элементы, соответствующие определенному условию, лучше воспользоваться циклом.

    Например, если вам нужно подсчитать только четные числа или строки определенной длины, цикл со счетчиком подойдет лучше.

    Посчитаем только четные числа (делятся на два без остатка if item % 2 == 0):

    my_list = [1, 2, 3, 4, 5, 6]
    counter = 0
    for item in my_list:
        if item % 2 == 0:
            counter += 1
    print(counter)

    Вывод: 3 (четные числа 2, 4, 6)

    Как работает len() с основными типами данных

    Разберем особенности работы len() со списками, строками, кортежами, словарями и множествами. 

    Списки (list)

    Функция len() возвращает количество элементов в списке, включая пустые списки и списки с разными типами данных.

    • Обычный список
    numbers = [1, 2, 3, 4]
    print(len(numbers))

    Вывод: 4

    • Список с разными типами данных
    mixed = [1, 'hello', 3.14, True]
    print(len(mixed)) 

    Вывод: 4

    • Пустой список
    empty = []
    print(len(empty))

    Вывод: 0

    Пустые списки можно вычислять с помощью len() и конструкции if-else:

    if len(my_list) > 0:
        print('Список не пустой')
    else:
        print('Список пустой')

    Строки (string)

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

    • Обычная строка
    text = 'Привет, мир!'
    print(len(text))

    Вывод: 12

    • Пустая строка
    empty_str = ''
    print(len(empty_str))

    Вывод: 0

    Для подсчета только букв (без пробелов и знаков) можно комбинировать len() с методами строк:

    my_tuple = (1, 'a', 3.14)
    print(len(my_tuple))

    Вывод: 3

    Словари (dict)

    В случае со словарями функция len() будет возвращать количество пар ключ-значение в словаре.

    my_dict = {'name': 'Alice', 'age': 25}
    print(len(my_dict))

    Вывод: 2

    Используйте len() для проверки наличия данных в словаре перед доступом к ключам:

    my_dict = {'a': 1}
    if len(my_dict) > 0:
        print(my_dict['a'])

    Это обеспечит безопасный доступ к содержимому словаря.

    Множества (set)

    Функция len() посчитает количество уникальных элементов в множестве.

    Важно, что при попытке создать множество с неуникальными значениями они автоматически удалятся. Так что и в подсчет элементов с помощью len() они не войдут.

    my_set = {1, 2, 3, 3}
    print(len(my_set))

    Вывод: 3

    Как еще можно использовать len()

    Кроме простого подсчета элементов, len() можно использовать и для более замысловатых задач.

    Итерации по индексам

    Если скомбинировать len(), for() и range() для перебора индексов списка и, например, вывода содержимого по списку.

    fruits = ['apple', 'banana', 'orange']
    for i in range(len(fruits)):
        print(f'Индекс {i}: {fruits[i]}')

    Вывод:

    Индекс 0: apple

    Индекс 1: banana

    Индекс 2: orange

    Подсчет уникальных элементов

    Представим, что у нас есть список numbers, и неизвестно, сколько в нем уникальных элементов. Чтобы их посчитать, нужно преобразовать список во множество и применить функцию len().

    numbers = [1, 1, 2, 2, 3]
    unique_count = len(set(numbers))
    print(unique_count) 

    Вывод: 3

    Выравнивание строк

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

    text = 'Python'
    padding = '*' * (10 - len(text))
    print(text + padding)

    Вывод: Python****

    Выравнивание строк

    Когда len() не подходит

    Неподдерживаемые типы данных

    • Len() вызовет ошибку, если передать неподдерживаемый тип, например число или булевое значение. Дело в том, что если у объекта нет встроенного метода __len__(), то применить к нему len() не получится.

    Пример:

    number = 42
    print(len(number))

    Вывод: 

    typeerror: object of type 'int' has no len()
    • Не все итераторы работают с len(). Например, для генераторов используют подход с функцией sum(), так как они не имеют фиксированной длины.

    Пример:

    my_gen = (x for x in range(3))
    count = sum(1 for _ in my_gen)
    print(count)

    Вывод: 3

    Но чаще их преобразовывают в list и считают длину списка:

    len(list(generator))
    • Многие итераторы, созданные из объектов без фиксированной длины (например, файлы, потоки или пользовательские итераторы), не поддерживают len().

    Почему так?

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

    Генераторы или итераторы, созданные через iter(), не хранят информацию о длине, особенно если их элементы вычисляются динамически (то есть создаются или генерируются по одному, только когда они запрашиваются, а не хранятся все сразу в памяти).

    Подсчет элементов во вложенных структурах

    Функция len() может посчитать только элементы верхнего уровня, но не содержимое вложенных списков или словарей.

    nested_list = [[1, 2], [3, 4], [5]]
    print(len(nested_list))

    Вывод: 3 (считает только списки верхнего уровня)

    В таком случае можно воспользоваться циклом для подсчета всех элементов:

    def count_all_elements(nested):
        total = 0
        for item in nested:
            if isinstance(item, list):
                total += count_all_elements(item)
            else:
                total += 1
        return total
    
    print(count_all_elements(nested_list))

    Вывод: 5

    Коротко о функции len()

    • Функция len() возвращает количество элементов в объекте (список, строка, кортеж, словарь, множество) в виде целого числа (int).
    • В списках len() считает элементы, включая пустые списки (len([]) = 0) и списки с разными типами данных.
    • В строках len() подсчитывает все символы, включая пробелы и специальные символы (например, len(‘Привет, мир!’) = 12).
    • В кортежах len() считает элементы, как в списках, но кортежи неизменяемы.
    • В словарях len() возвращает количество пар ключ-значение (например, len({‘a’: 1, ‘b’: 2}) = 2).
    • В множествах len() считает количество уникальных элементов.
    • Можно использовать в качестве альтернатив для подсчета символов циклы со счетчиком.
    • Некоторые итераторы, такие как генераторы, не поддерживают len(). Для них используют функцию sum().

    Инструкция

    Поделиться

    Скопировано
    0 комментариев
    Комментарии