Len: примеры (PYTHON)

Функция len в Python: полный обзор и практические примеры
Раздел: Встроенные функции, Размер коллекций
len(object): int

Описание функции len

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

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

Аргументы:

  • object (обязательный) - объект, длину которого требуется определить. Объект должен поддерживать протокол длины, то есть иметь метод __len__().

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

  • Целое число типа int, представляющее количество элементов в объекте. Для строк возвращается количество символов, для списков и кортежей - количество элементов, для словарей - количество пар ключ-значение.

Примеры применения

Примеры с разными типами данных:

# Строка
text = "Привет"
print(len(text))
6
# Список
numbers = [1, 2, 3, 4, 5]
print(len(numbers))
5
# Словарь
person = {"имя": "Анна", "возраст": 30}
print(len(person))
2
# Кортеж
tuple_data = (10, 20, 30)
print(len(tuple_data))
3
# Множество
unique_items = {1, 2, 3, 4, 4, 5}
print(len(unique_items))
5

Похожие функции в Python

В Python существуют альтернативные способы определения длины объектов:

  • __len__() - метод, который непосредственно вызывается функцией len(). Используется при реализации поддержки длины в пользовательских классах.
  • sys.getsizeof() - возвращает размер объекта в байтах, а не количество элементов.
  • str.__len__() и аналогичные методы конкретных типов - прямые вызовы методов, что обычно менее читаемо.

Функция len() предпочтительнее для общего использования благодаря лучшей читаемости и поддержке полиморфизма. Прямой вызов __len__() может применяться в специализированных случаях, например при реализации пользовательских контейнеров.

Аналоги в других языках

JavaScript: свойство length

let text = "Hello";
console.log(text.length);
5

PHP: функции strlen() для строк и count() для массивов

$text = "Hello";
echo strlen($text);
5

Java: метод length() для строк, свойство length для массивов, метод size() для коллекций

String text = "Hello";
System.out.println(text.length());
5

SQL: функция LENGTH() или CHAR_LENGTH()

SELECT LENGTH('Hello');
5

C#: свойство Length для массивов и строк, Count для коллекций

string text = "Hello";
Console.WriteLine(text.Length);
5

Lua: оператор #

local text = "Hello"
print(#text)
5

Go: функция len() встроенная

text := "Hello"
fmt.Println(len(text))
5

Kotlin: свойство length для строк, size для коллекций

val text = "Hello"
println(text.length)
5

Типичные ошибки

1. Передача объектов без поддержки длины:

print(len(42))
TypeError: object of type 'int' has no len()

2. Использование с типами, которые не имеют четкой длины:

import itertools
numbers = itertools.count(1)
print(len(numbers))
TypeError: object of type 'count' has no len()

3. Некорректная работа с Unicode символами:

# Символы, занимающие несколько кодовых точек
emoji = "????"
print(len(emoji))
1
# Но для составных эмоджи
emoji = "????‍????‍????‍????"
print(len(emoji))
7

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

Изменения в последних версиях

В Python 3 функция len() не претерпела значительных изменений в своей базовой функциональности. Однако в Python 3.10 были оптимизированы некоторые внутренние механизмы, что повысило производительность функции для встроенных типов.

Важное историческое изменение произошло в переходе от Python 2 к Python 3: в Python 2 функция len() могла возвращать long для очень больших последовательностей, а в Python 3 всегда возвращает int.

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

1. Пользовательский класс с поддержкой len():

Пример python
class CustomCollection:
    def __init__(self, items):
        self.items = items
    
    def __len__(self):
        return len(self.items)

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

2. Использование в условиях:

Пример python
data = []
if len(data) == 0:
    print("Список пуст")
else:
    print(f"В списке {len(data)} элементов")
Список пуст

3. Определение длины строки с учетом пробелов:

Пример python
text = "   Python   "
print(len(text))
print(len(text.strip()))
12
6

4. Использование с генераторами и преобразование в список:

Пример python
numbers = (x for x in range(10))
# print(len(numbers))  # Ошибка!
numbers_list = list(numbers)
print(len(numbers_list))
10

5. Работа с вложенными структурами:

Пример python
nested_list = [[1, 2], [3, 4, 5], [6]]
print(len(nested_list))  # Количество внутренних списков
print(len(nested_list[1]))  # Количество элементов во втором списке
3
3

6. Использование в сортировке по длине:

Пример python
words = ["яблоко", "груша", "апельсин", "киви"]
sorted_words = sorted(words, key=len)
print(sorted_words)
['киви', 'груша', 'яблоко', 'апельсин']

7. Определение длины байтовой строки:

Пример python
byte_string = b"Hello"
print(len(byte_string))
5

питон len function comments

En
Len Return length of object