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():
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. Использование в условиях:
data = []
if len(data) == 0:
print("Список пуст")
else:
print(f"В списке {len(data)} элементов")Список пуст
3. Определение длины строки с учетом пробелов:
text = " Python "
print(len(text))
print(len(text.strip()))12 6
4. Использование с генераторами и преобразование в список:
numbers = (x for x in range(10))
# print(len(numbers)) # Ошибка!
numbers_list = list(numbers)
print(len(numbers_list))10
5. Работа с вложенными структурами:
nested_list = [[1, 2], [3, 4, 5], [6]]
print(len(nested_list)) # Количество внутренних списков
print(len(nested_list[1])) # Количество элементов во втором списке3 3
6. Использование в сортировке по длине:
words = ["яблоко", "груша", "апельсин", "киви"]
sorted_words = sorted(words, key=len)
print(sorted_words)['киви', 'груша', 'яблоко', 'апельсин']
7. Определение длины байтовой строки:
byte_string = b"Hello"
print(len(byte_string))5