Π Π°Π·Π½ΠΎΠ΅

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

  1. Π”ΠΎΠΌ
  2. ВстроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Python
  3. Ѐункция Python len ()

(Бпонсоры) НачнитС ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ DataCamp’s
бСсплатный Π²Π²ΠΎΠ΄Π½Ρ‹ΠΉ курс ΠΏΠΎ Python.Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π°ΡƒΠΊΡƒ ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…, выполняя ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ задания ΠΏΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈ просматривая Π²ΠΈΠ΄Π΅ΠΎ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… инструкторов.
Начинай сСйчас!



ΠŸΠΠ ΠΠœΠ•Π’Π  ΠžΠŸΠ˜Π‘ΠΠΠ˜Π•
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
 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12 
 >>>
>>> def gen_func ():
... для i в диапазонС (5):
... Π²Ρ‹Ρ…ΠΎΠ΄ я
...
>>>
>>>
>>> len (gen_func ())
ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ (послСдний Π²Ρ‹Π·ΠΎΠ² послСдний):
  Π€Π°ΠΉΠ» "", строка 1, Π² 
TypeError: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° 'generator' Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ 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
>>>