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
Частые ошибки
Передача объекта без метода __len__:
class NoLength: pass obj = NoLength() print(len(obj)) # Ошибка: TypeError
Как исправить: Добавьте метод __len__ в определение класса или используйте объект, поддерживающий длину.
Использование len() для объектов, у которых длина может быть вычислена только через итерацию:
iterator = iter([1, 2, 3]) print(len(iterator)) # Ошибка: TypeError
Как исправить: Преобразуйте итератор в список, чтобы определить его длину:
iterator = iter([1, 2, 3]) print(len(list(iterator))) # 3
Попытка использовать len() с числами:
number = 42 print(len(number)) # Ошибка: TypeError
Как исправить: Убедитесь, что передаете итерируемый объект, а не число.
Часто задаваемые вопросы
Как работает len() с многомерными структурами? len() вернет количество элементов на верхнем уровне структуры:
matrix = [[1, 2], [3, 4], [5, 6]] print(len(matrix)) # 3
Можно ли использовать len() с пользовательскими объектами? Да, если объект реализует метод __len__:
class CustomObject: def __len__(self): return 10 obj = CustomObject() print(len(obj)) # 10
Что вернет len() для пустого объекта? Для пустого объекта, например, пустого списка или строки, результатом будет 0:
print(len("")) # 0 print(len([])) # 0
Поддерживает ли len() типы данных, созданные в сторонних библиотеках? Да, если объект из библиотеки реализует метод __len__. Например, объекты NumPy:
import numpy as np array = np.array([1, 2, 3]) print(len(array)) # 3