Len в python: Python 3 — Строковая функция len()
Функция len() в Python, считает количество элементов.
Возвращает количество элементов в последовательности.
Синтаксис:
Параметры:
s
— последовательность или коллекция.
Возвращаемое значение:
Описание:
Функция len()
возвращает длину (количество элементов) в объекте.
Аргумент может быть последовательностью, такой как строка, байты, кортеж, список или диапазон или коллекцией (такой как словарь, множество или неизменяемое множество).
Когда объект является строкой, функция len()
возвращает количество символов в строке.
Пользовательские типы данных могут определять метод __len__()
, значение из которого, будет возвращено при вызове функции len()
.
Примеры подсчета количества элементов в последовательности.
# подсчет элементов списка >>> mylist = ['apple', 'banana', 'cherry'] >>> len(x) # 3 # подсчет символов в строке >>> string = 'Hello' >>> len(string) # 5 # подсчет количества ключей словаря >>> d = {'a': 1, 'b': 1, 'c': 1, 'd': 1} >>> keys = list(d) >>> len(keys) # 4
Подсчет количества цифр в числе (длина числа)
Для того, чтобы посчитать количество цифр в числе необходимо сначала перевести число float
или int
в любую последовательность, например в строку, а затем к последовательности применить функцию len()
, что бы получить количество элементов.
Для получения строкового представления объектов float
и int
, применим к ним функцию str.
Пример получения длины целого числа:
# получение длины целого числа >>> x = 1235412687 >>> str_x = str(x) >>> str_x # '1235412687' >>> num_x = len(str_x) >>> num_x # 10
Так как вещественные числа в Python имеют запятую, то количество цифр в числе float
будет на 1 меньше, а именно len(str(float)) - 1
.
Пример получения длины вещественного числа:
# получение длины вещественного числа >>> x = 0.1230541287 # запишем преобразования короче >>> num_x = len(str(x)) - 1 >>> num_x # 11
Что бы получить количество уникальных цифр в числе, необходимо строковое представление числа преобразовать в множество set
, т.к. множество представляет собой последовательность неповторяющихся элементов.
Пример подсчета уникальных цифр в числах float
и int
:
# получение кол-ва уникальных цифр целого числа >>> x = 1235412687 # получаем строковое представление >>> str_x = str(x) # получаем множество уникальных цифр числа >>> set_x = set(str_x) # {'1', '5', '7', '8', '6', '2', '4', '3'} # считаем кол-во уникальных цифр >>> num_x = len(set_x) >>> num_x # 8 # для получения кол-ва уникальных цифр # числа `float` сделаем запись короче >>> x = 0.1230541287 # количество уникальных цифр числа `float` # будет на 1 меньше, т.к. число имеет разделитель >>> num_x = len(set(str(x))) - 1 # 8
Ошибка object of type ‘NoneType’ has no len() при установке pyjnius — python
Использую win8
Дополнительно установил jre и в системных параметрах установил
SET VS90COMNTOOLS=%VS100COMNTOOLS%
SET JDK_HOME=<path to the JDK installation directory>
SET JAVA_HOME=%JDK_HOME%
SET PATH=%JDK_HOME%\jre\bin\server;%PATH%
Сейчас получаю вот такое предупреждение
C:\Windows\System32>pip install pyjnius
Downloading/unpacking pyjnius
Running setup.py (path:c:\users\alexk\appdata\local\temp\pip_build_AlexK\pyjni
us\setup.py) egg_info for package pyjnius
warning: no files found matching '*COPYING'
Installing collected packages: pyjnius
Running setup.py install for pyjnius
skipping 'jnius\jnius.c' Cython extension (up-to-date)
building 'jnius' extension
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "c:\users\alexk\appdata\local\temp\pip_build_AlexK\pyjnius\setup.py",
line 154, in <module>
'Topic :: Software Development :: Libraries :: Application Frameworks'])
File "C:\Python27\lib\distutils\core.py", line 151, in setup
dist.run_commands()
File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands
self.run_command(cmd)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "build\bdist.win32\egg\setuptools\command\install.py", line 61, in ru
n
File "C:\Python27\lib\distutils\command\install.py", line 563, in run
self.run_command('build')
File "C:\Python27\lib\distutils\cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\lib\distutils\command\build.py", line 127, in run
self.run_command(cmd_name)
File "C:\Python27\lib\distutils\cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\lib\site-packages\Cython\Distutils\build_ext.py", line 1
63, in run
_build_ext.build_ext.run(self)
File "C:\Python27\lib\distutils\command\build_ext.py", line 337, in run
self.build_extensions()
File "C:\Python27\lib\site-packages\Cython\Distutils\build_ext.py", line 1
71, in build_extensions
self.build_extension(ext)
File "C:\Python27\lib\distutils\command\build_ext.py", line 496, in build_
extension
depends=ext.depends)
File "C:\Python27\lib\distutils\msvc9compiler.py", line 473, in compile
self.initialize()
File "C:\Python27\lib\distutils\msvc9compiler.py", line 383, in initialize
vc_env = query_vcvarsall(VERSION, plat_spec)
File "C:\Python27\lib\distutils\msvc9compiler.py", line 299, in query_vcva
rsall
raise ValueError(str(list(result.keys())))
ValueError: [u'path']
Complete output from command C:\Python27\python.exe -c "import setuptools, t
okenize;__file__='c:\\users\\alexk\\appdata\\local\\temp\\pip_build_AlexK\\pyjni
us\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().repl
ace('\r\n', '\n'), __file__, 'exec'))" install --record c:\users\alexk\appdata\l
ocal\temp\pip-4yd70b-record\install-record.txt --single-version-externally-manag
ed --compile:
running install
running build
running build_py
creating build
creating build\lib.win32-2.7
creating build\lib.win32-2.7\jnius
copying jnius\reflect.py -> build\lib.win32-2.7\jnius
copying jnius\__init__.py -> build\lib.win32-2.7\jnius
running build_ext
skipping 'jnius\jnius.c' Cython extension (up-to-date)
building 'jnius' extension
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "c:\users\alexk\appdata\local\temp\pip_build_AlexK\pyjnius\setup.py", lin
e 154, in <module>
'Topic :: Software Development :: Libraries :: Application Frameworks'])
File "C:\Python27\lib\distutils\core.py", line 151, in setup
dist.run_commands()
File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands
self.run_command(cmd)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "build\bdist.win32\egg\setuptools\command\install.py", line 61, in run
File "C:\Python27\lib\distutils\command\install.py", line 563, in run
self.run_command('build')
File "C:\Python27\lib\distutils\cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\lib\distutils\command\build.py", line 127, in run
self.run_command(cmd_name)
File "C:\Python27\lib\distutils\cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\lib\site-packages\Cython\Distutils\build_ext.py", line 163,
in run
_build_ext.build_ext.run(self)
File "C:\Python27\lib\distutils\command\build_ext.py", line 337, in run
self.build_extensions()
File "C:\Python27\lib\site-packages\Cython\Distutils\build_ext.py", line 171,
in build_extensions
self.build_extension(ext)
File "C:\Python27\lib\distutils\command\build_ext.py", line 496, in build_exte
nsion
depends=ext.depends)
File "C:\Python27\lib\distutils\msvc9compiler.py", line 473, in compile
self.initialize()
File "C:\Python27\lib\distutils\msvc9compiler.py", line 383, in initialize
vc_env = query_vcvarsall(VERSION, plat_spec)
File "C:\Python27\lib\distutils\msvc9compiler.py", line 299, in query_vcvarsal
l
raise ValueError(str(list(result.keys())))
ValueError: [u'path']
Аналогично, если C:\Windows\System32>pip install jnius
Может есть подробная инструкция ?
Мир Python: функционалим по-маленьку — Продвинутый Python
Продвинутый Python
Введение
Существует несколько парадигм в программировании, например, ООП, функциональная, императивная, логическая, да много их. Мы будем говорить про функциональное программирование.
Предпосылками для полноценного функционального программирования в Python являются: функции высших порядков, развитые средства обработки списков, рекурсия, возможность организации ленивых вычислений.
Сегодня познакомимся с простыми элементами, а сложные конструкции будут в других уроках.
Теория в теории
Как и в разговоре об ООП, так и о функциональном программировании, мы стараемся избегать определений. Все-таки четкое определение дать тяжело, поэтому здесь четкого определения не будет. Однако! Хотелки для функционального языка выделим:
- Функции высшего порядка
- Чистые функции
- Неизменяемые данные
Это не полный список, но даже этого хватает чтобы сделать «красиво». Если читателю хочется больше, то вот расширенный список:
- Функции высшего порядка
- Чистые функции
- Неизменяемые данные
- Замыкания
- Ленивость
- Хвостовая рекурсия
- Алгебраические типы данных
- Pattern matching
Постепенно рассмотрим все эти моменты и как использовать в Python.
А сегодня кратко, что есть что в первом списке.
Чистые функции
Чистые функции не производят никаких наблюдаемых побочных эффектов, только возвращают результат. Не меняют глобальных переменных, ничего никуда не посылают и не печатают, не трогают объектов, и так далее. Принимают данные, что-то вычисляют, учитывая только аргументы, и возвращают новые данные.
Плюсы:
- Легче читать и понимать код
- Легче тестировать (не надо создавать «условий»)
- Надежнее, потому что не зависят от «погоды» и состояния окружения, только от аргументов
- Можно запускать параллельно, можно кешировать результат
Неизменяемые данные
Неизменяемые (иммутабельные) структуры данных — это коллекции, которые нельзя изменить. Примерно как числа. Число просто есть, его нельзя поменять. Также и неизменяемый массив — он такой, каким его создали, и всегда таким будет. Если нужно добавить элемент — придется создать новый массив.
Преимущества неизменяемых структур:
- Безопасно разделять ссылку между потоками
- Легко тестировать
- Легко отследить жизненный цикл (соответствует data flow)
theory-source
Функции высшего порядка
Функцию, принимающую другую функцию в качестве аргумента и/или возвращающую другую функцию, называют функцией высшего порядка:
def f(x):
return x + 3
def g(function, x):
return function(x) * function(x)
print(g(f, 7))
Рассмотрели теорию, начнем переходить к практике, от простого к сложному.
Списковые включения или генератор списка
Рассмотрим одну конструкцию языка, которая поможет сократить количество строк кода. Не редко уровень программиста на Python можно определить с помощью этой конструкции.
Пример кода:
for x in xrange(5, 10):
if x % 2 == 0:
x =* 2
else:
x += 1
Цикл с условием, подобные встречаются не редко. А теперь попробуем эти 5 строк превратить в одну:
>>> [x * 2 if x % 2 == 0 else x + 1 for x in xrange(5, 10)]
[6, 12, 8, 16, 10]
Недурно, 5 строк или 1. Причем выразительность повысилась и такой код проще понимать — один комментарий можно на всякий случай добавить.
В общем виде эта конструкция такова:
[stmt for var in iterable if predicate]
Стоит понимать, что если код совсем не читаем, то лучше отказаться от такой конструкции.
Анонимные функции или lambda
Продолжаем сокращать количества кода.
Функция:
def calc(x, y):
return x**2 + y**2
Функция короткая, а как минимум 2 строки потратили. Можно ли сократить такие маленькие функции? А может не оформлять в виде функций? Ведь, не всегда хочется плодить лишние функции в модуле. А если функция занимает одну строчку, то и подавно. Поэтому в языках программирования встречаются анонимные функции, которые не имеют названия.
Анонимные функции в Python реализуются с помощью лямбда-исчисления и выглядят как лямбда-выражения:
>>> lambda x, y: x**2 + y**2
<function <lambda> at 0x7fb6e34ce5f0>
Для программиста это такие же функции и с ними можно также работать.
Чтобы обращаться к анонимным функциям несколько раз, присваиваем переменной и пользуемся на здоровье.
Пример:
>>> (lambda x, y: x**2 + y**2)(1, 4)
17
>>>
>>> func = lambda x, y: x**2 + y**2
>>> func(1, 4)
17
Лямбда-функции могут выступать в качестве аргумента. Даже для других лямбд:
multiplier = lambda n: lambda k: n*k
Использование lambda
Функции без названия научились создавать, а где использовать сейчас узнаем. Стандартная библиотека предоставляет несколько функций, которые могут принимать в качестве аргумента функцию — map(), filter(), reduce(), apply().
map()
Функция map() обрабатывает одну или несколько последовательностей с помощью заданной функции.
>>> list1 = [7, 2, 3, 10, 12]
>>> list2 = [-1, 1, -5, 4, 6]
>>> list(map(lambda x, y: x*y, list1, list2))
[-7, 2, -15, 40, 72]
Мы уже познакомились с генератором списков, давайте им воспользуемся, если длина список одинаковая:
>>> [x*y for x, y in zip(list1, list2)]
[-7, 2, -15, 40, 72]
Итак, заметно, что использование списковых включений короче, но лямбды более гибкие. Пойдем дальше.
filter()
Функция filter() позволяет фильтровать значения последовательности. В результирующем списке только те значения, для которых значение функции для элемента истинно:
>>> numbers = [10, 4, 2, -1, 6]
>>> list(filter(lambda x: x < 5, numbers)) # В результат попадают только те элементы x, для которых x < 5 истинно
[4, 2, -1]
То же самое с помощью списковых выражений:
>>> numbers = [10, 4, 2, -1, 6]
>>> [x for x in numbers if x < 5]
[4, 2, -1]
reduce()
Для организации цепочечных вычислений в списке можно использовать функцию reduce(). Например, произведение элементов списка может быть вычислено так (Python 2):
>>> numbers = [2, 3, 4, 5, 6]
>>> reduce(lambda res, x: res*x, numbers, 1)
720
Вычисления происходят в следующем порядке:
((((1*2)*3)*4)*5)*6
Цепочка вызовов связывается с помощью промежуточного результата (res). Если список пустой, просто используется третий параметр (в случае произведения нуля множителей это 1):
>>> reduce(lambda res, x: res*x, [], 1)
1
Разумеется, промежуточный результат необязательно число. Это может быть любой другой тип данных, в том числе и список. Следующий пример показывает реверс списка:
>>> reduce(lambda res, x: [x]+res, [1, 2, 3, 4], [])
[4, 3, 2, 1]
Для наиболее распространенных операций в Python есть встроенные функции:
>>> numbers = [1, 2, 3, 4, 5]
>>> sum(numbers)
15
>>> list(reversed(numbers))
[5, 4, 3, 2, 1]
В Python 3 встроенной функции reduce() нет, но её можно найти в модуле functools.
apply()
Функция для применения другой функции к позиционным и именованным аргументам, заданным списком и словарем соответственно (Python 2):
>>> def f(x, y, z, a=None, b=None):
... print x, y, z, a, b
...
>>> apply(f, [1, 2, 3], {'a': 4, 'b': 5})
1 2 3 4 5
В Python 3 вместо функции apply() следует использовать специальный синтаксис:
>>> def f(x, y, z, a=None, b=None):
... print(x, y, z, a, b)
...
>>> f(*[1, 2, 3], **{'a': 4, 'b': 5})
1 2 3 4 5
На этой встроенной функции закончим обзор стандартной библиотеки и перейдем к последнему на сегодня функциональному подходу.
Замыкания
Функции, определяемые внутри других функций, представляют собой замыкания. Зачем это нужно? Рассмотрим пример, который объяснит:
Код (вымышленный):
def processing(element, type_filter, all_data_size):
filters = Filter(all_data_size, type_filter).get_all()
for filt in filters:
element = filt.filter(element)
def main():
data = DataStorage().get_all_data()
for x in data:
processing(x, 'all', len(data))
Что можно в коде заметить: в этом коде переменные, которые живут по сути постоянно (т.е. одинаковые), но при этом мы загружаем или инициализируем по несколько раз. В итоге приходит понимание, что инициализация переменной занимает львиную долю времени в этом процессе, бывает что даже загрузка переменных в scope уменьшает производительность. Чтобы уменьшить накладные расходы необходимо использовать замыкания.
В замыкании однажды инициализируются переменные, которые затем без накладных расходов можно использовать.
Научимся оформлять замыкания:
def multiplier(n):
"multiplier(n) возвращает функцию, умножающую на n"
def mul(k):
return n*k
return mul
# того же эффекта можно добиться выражением
# multiplier = lambda n: lambda k: n*k
mul2 = multiplier(2) # mul2 - функция, умножающая на 2, например,
mul2(5) == 10
Заключение
В уроке мы рассмотрели базовые понятия ФП, а также составили список механизмов, которые будут рассмотрены в следующих уроках. Поговорили о способах уменьшения количества кода, таких как cписковые включения (генератор списка), lamda функции и их использовании и на последок было несколько слов про замыкания и для чего они нужны.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты.
Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?
Выделите текст, нажмите
ctrl + enter
и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.
Что-то не получается или материал кажется сложным?
Загляните в раздел «Обсуждение»:
- задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
- расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
- изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете
Python len ()
Синтаксис len ()
:
лен (с)
len () Параметры
s — последовательность (строка, байты, кортеж, список или диапазон) или коллекция (словарь, набор или замороженный набор)
Возвращаемое значение из len ()
Функция len ()
возвращает количество элементов объекта.
Отказ передать аргумент или передать недопустимый аргумент вызовет исключение TypeError
.
Пример 1. Как len () работает с кортежами, списками и диапазоном?
testList = []
print (testList, 'длина', len (testList))
testList = [1, 2, 3]
print (testList, 'длина', len (testList))
testTuple = (1, 2, 3)
print (testTuple, 'длина', len (testTuple))
testRange = диапазон (1, 10)
print ('Длина', testRange, 'is', len (testRange))
Выход
[] длина 0 [1, 2, 3] длина 3 (1, 2, 3) длина 3 Длина диапазона (1, 10) - 9
Посетите эти страницы, чтобы узнать больше о:
Пример 2: Как len () работает со строками и байтами?
testString = ''
print ('Длина', testString, 'is', len (testString))
testString = 'Python'
print ('Длина', testString, 'is', len (testString))
# байтовый объект
testByte = b'Python '
print ('Длина', testByte, 'is', len (testByte))
testList = [1, 2, 3]
# преобразование в объект байтов
testByte = байты (testList)
print ('Длина', testByte, 'is', len (testByte))
Выход
Длина 0 Длина Python 6 Длина b'Python - 6 Длина b '\ x01 \ x02 \ x03' составляет 3
Посетите эти страницы, чтобы узнать больше о:
Пример 3: Как len () работает со словарями и наборами?
testSet = {1, 2, 3}
print (testSet, 'длина', len (testSet))
# Пустой набор
testSet = set ()
print (testSet, 'длина', len (testSet))
testDict = {1: 'один', 2: 'два'}
print (testDict, 'длина', len (testDict))
testDict = {}
print (testDict, 'длина', len (testDict))
testSet = {1, 2}
# frozenSet
frozenTestSet = frozenset (testSet)
print (frozenTestSet, 'длина', len (frozenTestSet))
Выход
{1, 2, 3} длина 3 set () длина 0 {1: 'one', 2: 'two'} длина 2 {} длина 0 длина замораживания ({1, 2}) 2
Посетите эти страницы, чтобы узнать больше о:
Внутри len ()
вызывает метод объекта __len__
.Вы можете думать о len ()
как о
def len (s): вернуть s .__ len __ ()
Итак, объекту можно присвоить произвольную длину (при необходимости)
Пример 4: Как len () работает с пользовательскими объектами?
класс Сессия:
def __init __ (self, number = 0):
self.number = число
def __len __ (сам):
вернуть self.number
# длина по умолчанию 0
s1 = Сессия ()
печать (len (s1))
# задаем нестандартную длину
s2 = Сессия (6)
печать (len (s2))
Выход
0 6
Длина строки Python | Метод len () Пример
len () — это встроенная функция в Python.Вы можете использовать len (), чтобы получить длину данной строки, массива, списка, кортежа, словаря и т. Д.
Вы можете использовать функцию len для оптимизации производительности программы. Количество элементов, хранящихся в объекте, никогда не вычисляется, поэтому len помогает определить количество элементов.
Синтаксис:
len (значение)
Параметры:
Значение : заданное значение, длину которого вы хотите.
Возвращаемое значение
Возвращает целочисленное значение i.е. длина данной строки, массива, списка или коллекций.
Различные типы возвращаемых значений:
Строки:
Возвращает количество символов в строке, включая знаки пунктуации, пробелы и все типы специальных символов. Однако вы должны быть очень осторожны при использовании len переменной Null.
Пусто:
Пусто — это второй обратный вызов, который содержит ноль символов, но всегда имеет значение «Нет».
Коллекций:
Встроенная функция len возвращает количество элементов в коллекции.
TypeError:
Функция Len зависит от типа переданной ей переменной. Non-Type не имеет встроенной поддержки.
Словарь:
Для словаря каждая пара считается одной единицей. Однако значения и ключи не являются независимыми.
Пример 1: Как найти длину данной строки?
# тестирование len () str1 = "Добро пожаловать в Guru99 Python Tutorials" print ("Длина строки:", len (str1))
Выход:
Длина строки: 35
Пример 2: Как узнать длину списка в Python?
# чтобы найти длину списка list1 = ["Тим", "Чарли", "Тиффани", "Роберт"] print ("Длина списка", len (list1))
Выход:
Длина списка 4
Пример 3: Как найти длину кортежа в Python
# чтобы найти длину кортежа Tup = ('янв', 'фев', 'март') print ("Длина кортежа равна", len (Tup))
Выход:
Длина кортежа - 3
Пример 4: Как найти длину словаря в Python?
# чтобы найти длину словаря Dict = {'Тим': 18, 'Чарли': 12, 'Тиффани': 22, 'Роберт': 25} print ("Длина словаря составляет", len (Dict))
Выход:
Длина словаря 4
Пример 5: Как найти длину массива в Python
# найти длину массива arr1 = ['Тим', 'Чарли', 'Тиффани', 'Роберт'] print ("Длина массива равна", len (arr1))
Выход:
Длина массива 4
Описание:
- len () — это встроенная функция в Python.Вы можете использовать len (), чтобы получить длину заданной строки, массива, списка, кортежа, словаря и т. Д.
- Значение: заданное значение, длину которого вы хотите.
- Возвращаемое значение Возвращает целочисленное значение, то есть длину данной строки, или массива, или списка, или коллекций.
Функция Python len () — ThePythonGuru.com
- Дом
- Встроенные функции Python
- Функция Python len ()
(Спонсоры) Начните изучать Python с помощью DataCamp’s
бесплатный вводный курс по Python.Изучите науку о данных, выполняя интерактивные задания по кодированию и просматривая видео опытных инструкторов.
Начинай сейчас!
Обновлено 7 января 2020 г.
Функция len ()
подсчитывает количество элементов в объекте.
Его синтаксис следующий:
ПАРАМЕТР | ОПИСАНИЕ |
---|---|
obj | obj может быть строкой, списком, словарем, кортежем и т. Д. |
Вот пример:
1 2 3 4 5 6 7 8 9 10 11 12 | >>> >>> len ([1, 2, 3, 4, 5]) # длина списка 5 >>> >>> print (len ({"spande", "club", "diamond", "heart"})) # длина набора 4 >>> >>> print (len (("alpha", "beta", "gamma"))) # длина кортежа 3 >>> >>> print (len ({"mango": 10, "apple": 40, "plum": 16})) # длина словаря 3 |
Попробовать:
# длина списка
print (len ([1, 2, 3, 4, 5]))
# длина набора
print (len ({"spande", "клуб", "алмаз", "сердце"}))
# длина кортежа
print (len ((«альфа», «бета», «гамма»)))
# длина словаря
print (len ({"манго": 10, "яблоко": 40, "слива": 16}))
Как ни странно, функция len ()
не работает с генератором.Попытка вызвать len ()
для объекта-генератора приведет к исключению TypeError
.
1 2 3 4 5 6 7 8 9 10 11 12 | >>> >>> def gen_func (): ... для i в диапазоне (5): ... выход я ... >>> >>> >>> len (gen_func ()) Отслеживание (последний вызов последний): Файл " |
Попробовать:
def gen_func ():
для i в диапазоне (5):
уступить я
печать (len (gen_func ()))
len () с определяемыми пользователем объектами
Чтобы использовать len ()
для определяемых пользователем объектов, вам необходимо реализовать метод __len __ ()
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 год 22 23 24 25 26 год 27 28 год 29 | >>> >>> Стек классов: ... ... def __init __ (сам): ... self._stack = [] ... ... def push (self, item): ... self._stack.append (элемент) ... ... def pop (self): ... self._stack.pop () ... ... def __len __ (сам): ... вернуть len (self._stack) ... >>> >>> s = Стек () >>> >>> len (s) 0 >>> >>> с.толкать (2) >>> s.push (5) >>> s.push (9) >>> s.push (12) >>> >>> len (s) 4 >>> |
Попробовать:
класс Стек:
def __init __ (сам):
self._stack = []
def push (self, item):
self._stack.append (элемент)
def pop (сам):
self._stack.pop ()
def __len __ (сам):
вернуть len (self._stack)
s = Стек ()
печать (len (s))
s.push (2)
с.пуш (5)
s.push (9)
s.push (12)
печать (len (s))
Другие обучающие программы (спонсоры)
Этот сайт щедро поддерживается
DataCamp.DataCamp предлагает интерактивные онлайн
Учебники по Python
для науки о данных. Присоединяйтесь к более чем миллиону других учеников и получите
начал изучать Python для науки о данных сегодня!
Пожалуйста, включите JavaScript, чтобы просматривать комментарии от Disqus.
Python len Функция
Функция Python len находит длину объекта. Или, скажем, функция len находит общее количество элементов в заданном объекте. Если вы находите длину строки, эта функция Python len возвращает общее количество символов.
В этом разделе мы обсудим, как использовать эту функцию Python len для String, Tuple, List, Dictionary, Sets, Bytes и range. Синтаксис этой функции len —
.
len (Имя_объекта)
Python len Пример
В этом примере длины Python мы использовали этот метод Python, чтобы найти длину пустой строки
# функция Python len lenexample = '' print ("\ n", пример) # Пример длины Python print ("Длина =", len (lenexample))
Python Длина строки
Когда вы используете эту функцию Python len для объекта String, она подсчитывает и возвращает общее количество символов (включая пробелы) в строке.Или, скажем, находит длину строки в Python. В этом примере мы находим длину строки Tutorial Gateway
# функция Python len stringLenExample = 'Учебный шлюз' print ("\ n", stringLenExample) # Python Пример длины строки print ("Длина данной строки =", len (stringLenExample))
Python длина кортежа
В этом примере определяется длина кортежа с помощью функции Python len. Это означает подсчет общего количества элементов в этом кортеже.Сначала мы объявили пустой кортеж и вычислили длину пустого кортежа. Затем мы находим длину целочисленного кортежа.
# функция Python len # Python Длина пустого кортежа tupleLen = () print ("Длина кортежа =", len (tupleLen)) tupleLenExample = (10, 20, 30, 40, 50, 60, 70) print ("\ n", tupleLenExample) # Пример длины кортежа в Python print ("Длина кортежа =", len (tupleLenExample))
Python Длина кортежа Пример 2
На этот раз мы используем функцию len для строкового кортежа.
# функция Python len tupleLenExample = ('Банан', 'Апельсин', 'Ежевика', 'Яблоко') print ("\ n", tupleLenExample) # Пример длины кортежа в Python print ("Длина кортежа =", len (tupleLenExample))
Пример длины списка Python
Эта функция Python len также помогает вам найти длину списка или общее количество элементов списка. Сначала мы объявили пустой список и нашли его длину. Затем мы использовали функцию len, чтобы найти длину числового набора. Наконец, уточнение длины списка строк.
# функция Python len # Python Длина пустого списка listLen = () print ("Длина списка =", len (listLen)) # Python Длина списка, пример 1 listLenExample = [15, 20, 35, 40, 55, 60, 70] print ("\ n", listLenExample) print ("Длина списка =", len (listLenExample)) # Пример длины списка Python 2 stringListLen = ['яблоко', 'манго', 'апельсин', 'вишня', 'банан'] print ("\ n", stringListLen) print ("Длина списка =", len (stringListLen))
Словарь Python len
Функция Python len в Словаре находит длину словаря Python.Или находит общее количество доступных элементов в данном словаре.
# функция Python len # Python Длина пустого словаря DictionaryLen = dict () print ("Длина словаря =", len (DictionaryLen)) # Python Длина словаря, пример 1 DictionaryLenExample = {1: 'манго', 2: 'киви', 3: 'вишня'} print ("\ n", DictionaryLenExample) print ("Длина словаря =", len (DictionaryLenExample)) # Пример 2 длины словаря Python mixedDictionaryLen = {'ID': 42, 'name': 'Кевин', 'возраст': 25, 1: 1200} print ("\ n", mixedDictionaryLen) print ("Длина словаря =", len (mixedDictionaryLen))
Python Длина набора Пример
Функция длины Python также находит заданную длину или общее количество элементов в наборе.Затем мы объявили пустой набор, числовой набор и набор строк. Используя эту функцию len, мы находим длину числового набора, пустого набора и набора строк.
# функция Python len # Python Длина пустого набора SetLen = () print ("Длина набора =", len (SetLen)) # Python Длина набора Пример 1 SetLenExample = {125, 200, 350, 400, 505, 607, 760} print ("\ n", SetLenExample) print ("Длина набора =", len (SetLenExample)) # Python Set Length Example 2 stringSetLen = {'яблоко', 'манго', 'вишня', 'киви', 'апельсин', 'банан'} print ("\ n", stringSetLen) print ("Длина набора =", len (stringSetLen))
Python длина массива
В этом примере мы находим длину массива Python.Сначала мы находим длину пустого массива. Затем находим длину целочисленного массива и массива строк.
# функция Python len # Python Длина пустого массива ArrayLen = [] print ("Длина массива =", len (ArrayLen)) # Python Длина массива, пример 1 ArrayLenExample = [5, 12, 35, 22, 40, 5] print ("\ n", ArrayLenExample) print ("Длина массива =", len (ArrayLenExample)) # Пример длины массива Python 2 stringArrayLen = ['яблоко', 'вишня', 'киви', 'манго', 'апельсин', 'банан'] print ("\ n", stringArrayLen) print ("Длина массива =", len (stringArrayLen))
Python Длина диапазона
Функция Python len предназначена не только для определения длины объекта, но и для определения длины диапазона.В этом примере мы объявили диапазон от 4 до 10 и нашли длину между этим диапазоном. Чтобы лучше понять, мы использовали другой пример с большим диапазоном.
# функция Python len # Python Длина диапазона rangeLen = диапазон (4, 10) print ("Python Range Length =", len (rangeLen)) # Python Длина диапазона, пример 2 rangeLen = диапазон (15, 109) print ("Python Range Length =", len (rangeLen))
Python Byte len
Эта функция длины Python также позволяет вам найти длину в байтах.В этом примере определяется длина байта.
# функция Python len # Python Длина байта byteLen = b'Python Учебник ' print ("Длина байта =", len (byteLen))
Почему в Python есть функция len ()? — Эндрю Брукинс
Новые пользователи Python часто удивляются, узнав, что вы вызываете глобальную функцию с именем len ()
, чтобы получить количество элементов в контейнере.
Например, если вы привыкли к языку вроде Ruby или Java, вы можете ожидать, что список Python будет иметь метод length ()
, но нет — чтобы получить длину списка, вы вызываете len (my_list)
.
Сейчас, конечно, красота субъективна. Но почему Python использует этот подход вместо того, чтобы давать спискам и другим контейнерам метод length ()
?
Если коротко, то Гвидо это понравилось.
Более длинный ответ заключается в том, что len ()
заставляет спрашивать, сколько элементов в контейнере согласовано с поверхности — len ()
— на протяжении всей реализации, что выполняется с помощью специального метода __length __ ()
.
Давайте посмотрим, как это работает и почему это лучше, чем подходы в Java и Ruby, на двух популярных примерах.
Поверхность
Основная причина того, что len ()
так хорошо работает и остается частью языка Python, заключается в том, что она предоставляет согласованный интерфейс для проверки количества вещей, содержащихся в объекте.
Поскольку len ()
является частью языка, мы знаем, чего ожидать от его ввода и вывода.Что бы ни означало «количество вещей» в контексте объекта, который мы передаем в len ()
, мы знаем, что получим целочисленный результат.
Это все хорошо, скажете вы, но разве объект не реализует какой-то метод length ()
, который нам вызывает len ()
?
На самом деле именно это и происходит. Для работы с len ()
ваш класс должен реализовать метод __length __ ()
.
Это простое косвенное обращение ведет к более глубокой согласованности: все контейнеры реализуют один и тот же метод для ответа на этот вопрос.
Глубокая согласованность
Давайте быстро посмотрим, как найти количество элементов в различных классах контейнеров в Java и Ruby.
Поп-викторина:
- Как узнать количество элементов в массиве
- Как насчет
ArrayList
? - Как насчет тех же вопросов для массива
- Как насчет количества символов в строке
А вот ответы:
-
Массив.длина ()
(Java) -
ArrayList.size ()
(Java) -
Длина массива
,Размер массива
, илиЧисло массивов
(Ruby) -
String.length
,String.size
, , но неString.count
(Ruby)
Что ж, это сбивает с толку по сравнению с Python, в котором len ()
обрабатывает все эти случаи.
Java и Ruby имеют интерфейсы и миксины, соответственно, которые описывают объекты, имеющие размер или длину, но ни один из подходов не является таким последовательным, как подход Python.Например, в Ruby String
не использует миксин Enumerable
и, следовательно, не имеет метода count ()
, такого как Array
.
Или… подождите… это ?
irb (основной): 001: 0> x = "эй"
=> "эй"
irb (основной): 002: 0> x.count
Отслеживание (последний вызов последний):
3: из /home/andrew/.rbenv/versions/2.5.0/bin/irb:11:in ` '
2: от (irb): 2
1: from (irb): 2: in `count '
ArgumentError (неправильное количество аргументов (дано 0, ожидается 1+))
Итак, String
имеет метод count ()
, но он не делает того, что вы могли бы ожидать, учитывая, как count ()
работает с Enumerable
объектами.Вместо того, чтобы дать нам количество символов в строке, count ()
принимает строку в качестве аргумента и подсчитывает вхождения входной строки в целевую строку.
Достаточно ли я аргументировал свою точку зрения? Языкам, использующим только интерфейсы или миксины, не хватает ясности, которую имеет Python с len ()
и __length __ ()
.
Протоколы
Так что же Python делает по-другому?
В конечном счете, разница заключается в сочетании встроенной функции len ()
с постоянно используемым методом реализации __length __ ()
.
Но это еще не все.
Магический метод __length __ ()
формирует очень простой «протокол».
Протокол в Python — это неформальный интерфейс. На практике это набор методов, которые начинаются и заканчиваются двойным подчеркиванием, которые определяют такое поведение, как итерация.
Определяемые пользователем классы, реализующие все методы протокола, могут подключаться к поведению системы с помощью встроенных функций, таких как range ()
и синтаксиса, например for... в
.
Мне достаточно сказать о протоколах — и особенно о новом механизме структурного подтипа в Python 3.8 — чтобы заполнить еще одно сообщение в блоге, так что пока я оставлю все как есть.
Вернитесь в ближайшее время, чтобы увидеть мой следующий пост о протоколах и классах протоколов Python!
Получите мой информационный бюллетень.
Вы будете время от времени получать электронное письмо, когда я буду достаточно взволнован технологией, чтобы написать о ней.
Python len () — Примеры Python
Python len ()
Python len () — это встроенная функция, которая возвращает целое число, представляющее количество элементов в объекте, переданном ему в качестве аргумента.
Синтаксис len ()
Синтаксис функции len ():
len (объект)
, где объект может иметь тип строка, байты, список, диапазон, словарь, набор или замороженный набор .
Функция len () возвращает целое число.
Пример 1: len (строка)
В этом примере мы передадим строку Python в функцию len (). Функция len (str) возвращает длину этой строки.
Программа Python
string = 'hello world!'
n = len (строка)
print (n)
Run
Output
12
Пример 2: len (байты)
В этом примере мы передадим объект байтов в функцию len ().Функция len (bytes) возвращает количество байтов в заданном объекте bytes.
Программа Python
байта1 = b '\ x00 \ x10'
n = len (байты1)
print (n)
Run
Output
2
Пример 3: len (list)
В этом примере мы передадим список в функцию len (). Функция len (list) возвращает количество элементов, присутствующих в списке.
Программа Python
myList = [25, 74, 'hello']
n = len (myList)
print (n)
Run
Output
3
Пример 4: len (range)
В этом примере мы передадим объект диапазона в функцию len ().Функция len (range) возвращает количество последовательностей чисел в диапазоне.
Программа Python
myRange = диапазон (0, 8)
n = len (myRange)
print (n)
Run
Output
8
Пример 5: len (dict)
В этом примере мы передадим словарь в функцию len (). Функция len (dict) возвращает количество пар ключ: значение в этом словаре.
Программа Python
myDict = {'a': 12, 'b': 45, 'c': 98}
п = len (myDict)
print (n)
Run
Output
3
Пример 6: len (set)
В этом примере мы передадим набор в функцию len ().Функция len () возвращает количество элементов в этом наборе.
Программа Python
mySet = {24, 85, 73, 66}
n = len (mySet)
print (n)
Run
Output
4
Пример 7: len (frozenset)
В этом примере мы передадим строку в функцию len (). Функция len (frozenset) возвращает количество элементов, присутствующих в замороженном наборе.
Программа Python
гласных = frozenset (('a', 'e', 'i', 'o', 'u'))
n = len (гласные)
print (n)
Run
Output
2
Summary
В этом руководстве примеров Python мы узнали, как использовать функцию len (), чтобы найти количество элементов в данной коллекции или последовательности.
Функция Python len () — пример и объяснение
Python len ()
— это встроенная функция, которая возвращает длину (количество элементов) объекта.
pyy
Python len () Синтаксис
лин (-ы)
Функция len ()
принимает в качестве аргумента только один параметр.
- s (обязательно) — объект, длина которого должна быть возвращена.
Параметр может быть последовательностью (например, строкой, байтами, кортежем, списком или диапазоном) или коллекцией (например, словарем, набором или замороженным набором).
TypeError
возникает, если аргумент не указан или для функции len ()
предоставлен недопустимый аргумент.
__len __ () метод
Многих путает разница между методами __len __ ()
и len ()
.
Ну, len (s)
— это встроенный в Python метод, который возвращает длину объекта. Теперь __len __ ()
— это специальный метод, который внутренне вызывается методом len (s)
для возврата длины объекта.
Итак, когда мы вызываем метод len (s)
, s .__ len __ ()
— это то, что на самом деле происходит за кулисами для вычисления длины.
Функцию len () Python можно интерпретировать как:
def len (s):
возврат s .__ len __ ()
Python len (), пример
#Python len () со списками
>>> список1 = []
>>> len (список1)
0
>>> list2 = [1,2,3]
>>> len (список2)
3
#Python len () с кортежами
>>> кортеж1 = ()
>>> len (кортеж1)
0
>>> кортеж2 = (1,2,3)
>>> len (кортеж2)
3
#Python len () со строками
>>> str1 = ''
>>> len (str1)
0
>>> str2 = 'Python'
>>> len (str2)
6
#Python len () с наборами
>>> set1 = {}
>>> len (набор1)
0
>>> set2 = {1,2,3}
>>> len (set2)
3
#Python len () с настраиваемыми объектами
>>> class Пример:
def __len __ (сам):
возврат 6>>> obj = Пример ()
>>> объект.