Функция len() в Python принимает объект в качестве аргумента и возвращает длину этого объекта. Например, функция len() может возвращать количество элементов в списке.
Друзья, подписывайтесь на наш телеграм канал Pythonist. Там еще больше туториалов, задач и книг по Python
Синтаксис функции len() имеет следующий вид:
len(object)
Функция len()
принимает один аргумент, который может быть:
- последовательностью — строки, байтовые строки, итерируемые последовательности типа списка или кортежа;
- коллекцией — словари, множества, замороженные множества и так далее.
А возвращает len()
количество элементов в объекте, который передан в качестве аргумента.
Если мы не передаем никакого аргумента или аргумент имеет недопустимый тип, это вызовет исключение TypeError
.
Ошибка TypeError возникает, когда тип данных не является коллекцией или последовательностью. Например, логическое значение, int и т. д.
Например:
print(len(False)) print(len(1212))
Результат:
TypeError: object of type 'bool' has no len() TypeError: object of type 'int' has no len()
Функция len() в действии
Давайте найдем количество элементов внутри списка, иными словами — длину списка.
fruits = ['Bananas', 'Apples', 'Mangoes'] # вычисляем длину списка фруктов l = len(fruits) # выводим длину списка на экран print(l) # Результат: # 3
Что собой представляет функция len() в Python?
len()
— это встроенная функция Python, которая принимает объект в качестве аргумента и возвращает его длину. Например, она может возвращать количество элементов в списке Python.
help(len)
Результат:
Help on built-in function len in module builtins: len(obj, /) Return the number of items in an object.
Всякий раз, когда мы используем встроенные и внешние типы данных с функцией len()
, она не производит итерацию по структуре данных. Длина объекта-контейнера хранится как атрибут данного объекта. Значение этого атрибута изменяется каждый раз, когда элементы добавляются или удаляются из структуры данных, и len()
просто возвращает данное значение. Это гарантирует, что функция len() работает быстро и эффективно.
Как применяется функция len()
Использование функции len() со встроенными последовательностями
Последовательность — это объект, содержащий элементы в упорядоченном виде. Списки, кортежи и строки являются основными примерами встроенных последовательностей в Python, а функция len() используется для вычисления длин этих последовательностей.
# Строка с именем name = "Andrew" print(len(name)) # 6 # Список продуктов food_items = ["Pizza", "Burger", "French Fries"] print(len(food_items)) # 3 # Кортеж с координатами coordinates = (51, 24) print(len(coordinates)) # 2 # Пустая строка print(len("")) # 0 # Пустой список print(len([])) # 0 # Пустой кортеж print(len()) # 0
Объяснение кода:
В приведенном выше фрагменте кода, чтобы найти длину строки name
, списка food_items
и кортежа coordinates
, мы используем len()
. Все эти три типа данных являются допустимыми аргументами для функции len()
. Данная функция возвращает целое число, так как подсчитывает количество элементов в объекте, который передается ей в качестве аргумента. Если аргумент является пустой последовательностью, функция len()
возвращает 0
.
Для создания последовательностей в определенном диапазоне мы также можем использовать функцию range()
. Данная функция не хранит свои значения, а генерирует их по мере необходимости. Однако мы можем найти длину такой последовательности при помощи функции len()
.
print(len(range(1, 10))) # Результат: # 9
Объяснение кода:
Этот диапазон чисел включает целые числа от 1 до 9 (10 исключается). Мы можем задавать длину объекта функции range()
, используя ее аргументы start
, stop
и step
.
Использование функции len() со встроенными коллекциями
Коллекции в Python — это типы данных, построенные на базе контейнеров. Это списки, множества, кортежи и словари. Все коллекции имеют определенные характеристики, основанные на их объявлении и использовании в программе. Например, списки объявляются в квадратных скобках. Они изменяемы, хранят повторяющиеся значения, а к их элементам можно обращаться при помощи индексов.
Пример 1. Определение длины коллекции, сгенерированной при помощи модуля random
В данном примере мы сначала используем функцию randint
модуля random
для создания списка случайных целых чисел, а затем применим функцию len()
, чтобы найти количество элементов в коллекции.
import random # Создаем список из 10 случайных чисел nums = [random.randint(1, 10) for _ in range(10)] print(nums) # Создаем множество, которое содержит только уникальные элементы списка unique = set(nums) # Выводим на экран множество и его длину print(unique) print(len(unique))
Результат:
[9, 1, 8, 6, 8, 8, 1, 9, 3, 10] {1, 3, 6, 8, 9, 10} 6
Объяснение кода:
В приведенной выше программе мы сгенерировали список из 10 случайных чисел в диапазоне от 1 до 10, используя представление списков. Результат будет отличаться при каждом новом запуске кода, поскольку мы генерируем случайные числа. В данном случае множество содержит 6 уникальных чисел.
Пример 2. Определение количества элементов в словаре
Словарь — это встроенный тип данных в Python, который используется для хранения элементов в виде пар ключ-значение. Когда мы используем словарь в качестве аргумента для len()
, функция возвращает количество элементов (пар ключ-значение) в словаре.
# Словарь, содержащий продукты питания print(len({"Potato": 10, "Onion": 12, "Tomato": 11})) # Пустой словарь print(len({})) # Результат: # 3 # 0
Объяснение кода:
В выводе первым мы получили число 3
. Это означает, что в словаре с продуктами есть три пары ключ-значение. Как и в случае с последовательностями, функция len()
возвращает 0
, если аргументом является либо пустой словарь, либо пустое множество.
Использование функции len() с другими встроенными типами данных
Типы данных, которые не хранят в себе более одного элемента, не могут использоваться в качестве аргумента для функции len()
.
print(len(False)) print(len(1))
Результат:
TypeError: object of type 'bool' has no len() TypeError: object of type 'int' has no len()
Целочисленные, вещественные, логические и сложные типы являются примерами встроенных типов данных, которые нельзя использовать с функцией len()
. Функция вызывает TypeError, когда в нее передается аргумент недопустимого типа данных.
Использование функции len() со сторонними библиотеками
Мы также можем использовать функцию len()
для объектов из различных сторонних библиотек. В этом разделе мы рассмотрим примеры использования len()
с типами данных из двух популярных библиотек — NumPy и pandas.
Пример 1. Использование функции len() с массивом NumPy
Библиотека NumPy используется для выполнения ресурсоемких задач и является строительным блоком для различных типов данных.
Применив функцию NumPy np.array(), мы можем создать объект типа <np.ndarray>
, используя переданный в качестве аргумента список.
import numpy as np nums = np.array([1, 7, 11, 2, 9, 25]) print(type(nums)) print(len(nums)) # Результат: # <class 'numpy.ndarray'> # 6
Объяснение кода:
Мы создали одномерный массив длины 6
, используя функцию np.array()
, и вычислили его тип и длину, используя функции type()
и len()
соответственно.
Пример 2. Использование функции len() с Pandas DataFrame
Pandas DataFrame — это двумерная структура данных с помеченными осями (строками и столбцами). Данные внутри Pandas DataFrame выровнены табличным образом по строкам и столбцам. Датафреймы (DataFrame) широко используются в машинном обучении, научных вычислениях и многих других областях, связанных с интенсивным использованием данных.
import pandas as pd # Создаем словарь marks = { "Ash": [60, 75, 90], "Gary": [78, 55, 87], "Max": [47, 96, 85], "Tyson": [68, 88, 69], } # Создаем из словаря датафрейм df = pd.DataFrame(marks, index=["Maths", "Physics", "Chemistry"]) print(df) # Выводим на экран длину датафрейма print(len(df)) # Выводим на экран размеры датафрейма print(df.shape)
Результат:
Ash Gary Max Tyson Maths 60 78 47 68 Physics 75 55 96 88 Chemistry 90 87 85 69 3 (3, 4)
Объяснение кода:
Ключи нашего словаря, содержащего отметки, представляют собой строки, являющиеся именами студентов. Значение каждого ключа представляет собой список, в котором хранятся оценки по трем предметам: математике, физике и химии.
При создании датафрейма с использованием этого словаря в качестве аргумента в функции pd.DataFrame()
мы также должны определить индекс, используя список, содержащий три учебных предмета.
Созданный датафрейм содержит три строки и четыре столбца. Функция len()
возвращает количество строк в датафрейме. Pandas DataFrame имеет свойство .shape
, которое можно использовать для вывода количества строк и столбцов датафрейма в кортеже из двух элементов.
Использование функции len() в пользовательских классах
Встроенная в Python функция len()
вызывает в нашем классе метод с именем __len__()
. Такие методы, имеющие двойное подчеркивание в начале и конце имени, называются магическими.
Реализация этого метода позволит вызову len()
работать с нашим классом. Если данный метод не будет реализован, вызов функции len()
завершится ошибкой AttributeError. Встроенная в Python функция len()
вызывает метод .__len__()
своего аргумента.
class Order: def __init__(self, count): self.count = count def __len__(self): return self.count myOrder = Order(7) print(len(myOrder)) # Результат: # 7
Объяснение кода:
В вышеприведенной программе есть класс Order
с атрибутом count
. Мы также реализовали магическую функцию __len__()
, которая возвращает общее количество заказов, переданных ей в качестве аргумента. Далее мы создали экземпляр нашего класса с именем myOrder
, передав в него аргумент count
, равный семи. И при вызове функции len() было возвращено значение данного атрибута.
Заключение
В данной статье мы рассмотрели, как использовать функцию len() в Python для определения количества элементов в последовательностях, коллекциях и сторонних типах данных.
Функция len() принимает объект в качестве аргумента и возвращает длину этого объекта.
Функцию len() можно использовать для:
- встроенных типов данных;
- типов данных из сторонних библиотек (например Numpy или pandas);
- заданных пользователем классов (для этого в классе необходимо реализовать магический метод
__len__()
);
Перевод статьи «len() Function in Python».