len

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

Синтаксис

len(s)

Аргументы

  • s:
    • Что означает: Объект, длину которого нужно определить.
    • Возможные значения: Любой объект, который поддерживает метод __len__.

Возвращаемое значение

Целое число, равное количеству элементов в объекте.

Примеры использования

# Длина строки
text = "Python"
print(len(text))  # 6
# Длина списка
numbers = [1, 2, 3, 4, 5]
print(len(numbers))  # 5
# Длина словаря
data = {"a": 1, "b": 2, "c": 3}
print(len(data))  # 3
# Длина пустого объекта
empty_list = []
print(len(empty_list))  # 0

Эквивалентный код

def len(iterable):
    count = 0
    for _ in iterable:
        count += 1
    return count

# Пример использования
my_list = [1, 2, 3]
print(len(my_list))  # 3

Частые ошибки

  1. Передача объекта без метода __len__:

    class NoLength:
        pass
    
    obj = NoLength()
    print(len(obj))  # Ошибка: TypeError
    

    Как исправить: Добавьте метод __len__ в определение класса или используйте объект, поддерживающий длину.

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

    iterator = iter([1, 2, 3])
    print(len(iterator))  # Ошибка: TypeError
    

    Как исправить: Преобразуйте итератор в список, чтобы определить его длину:

    iterator = iter([1, 2, 3])
    print(len(list(iterator)))  # 3
    
  3. Попытка использовать len() с числами:

    number = 42
    print(len(number))  # Ошибка: TypeError
    

    Как исправить: Убедитесь, что передаете итерируемый объект, а не число.

Часто задаваемые вопросы

  1. Как работает len() с многомерными структурами? len() вернет количество элементов на верхнем уровне структуры:

    matrix = [[1, 2], [3, 4], [5, 6]]
    print(len(matrix))  # 3
    
  2. Можно ли использовать len() с пользовательскими объектами? Да, если объект реализует метод __len__:

    class CustomObject:
        def __len__(self):
            return 10
    
    obj = CustomObject()
    print(len(obj))  # 10
    
  3. Что вернет len() для пустого объекта? Для пустого объекта, например, пустого списка или строки, результатом будет 0:

    print(len(""))  # 0
    print(len([]))  # 0
    
  4. Поддерживает ли len() типы данных, созданные в сторонних библиотеках? Да, если объект из библиотеки реализует метод __len__. Например, объекты NumPy:

    import numpy as np
    array = np.array([1, 2, 3])
    print(len(array))  # 3