A b c a c b c мноТСства: | Supercomputer Software Department

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π° ΠΈ словари Π² Python

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

  • Бсылки Π½Π° контСсты
  • ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π° Python
    • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ мноТСства
    • ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ
      • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ
    • Бводная Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΠΎ мноТСствам (cheatsheet)
    • НСизмСняСмыС мноТСства
  • Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ Python
    • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ словаря
      • ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎ числовых ΠΊΠ»ΡŽΡ‡Π°Ρ…
    • ИспользованиС DictView: Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈ мноТСствСнныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ
    • Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ с упорядочСнными ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ OrderedDict
  • ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ (ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ)
  • ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ (ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ)
  • ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ (ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ)

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ (set) β€” встроСнная структура Π΄Π°Π½Π½Ρ‹Ρ… языка Python, ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ свойства:

  • мноТСство β€” это коллСкция
    ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ содСрТит элСмСнты
  • мноТСство нСупорядочСнно
    ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Π½Π΅ записываСт (Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚) ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈΠ»ΠΈ порядок добавлСния Π΅Π³ΠΎ элСмСнтов.
    Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, мноТСство Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ свойств ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, массива): Ρƒ элСмСнтов мноТСства Π½Π΅Ρ‚ индСксов, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ срСз мноТСства…
  • элСмСнты мноТСства ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹
    ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π²Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… элСмСнта.
  • элСмСнты мноТСства β€” Ρ…Π΅ΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (hashable objects)
    Π’ Python мноТСство set Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ с использованиСм Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ элСмСнты мноТСства Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ нСизмСняСмыми ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. НапримСр, элСмСнтом мноТСства ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ строка, число, ΠΊΠΎΡ€Ρ‚Π΅ΠΆ tuple, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ список list, Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мноТСство set…

Π­Ρ‚ΠΈ свойства мноТСств часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ элСмСнтов, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ для матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ пСрСсСчСния, объСдинСния, разности…

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ мноТСства

ЗапуститС Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ Python Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½ΠΈΠΆΠ΅.

ΠŸΡƒΡΡ‚ΠΎΠ΅ мноТСство создаётся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ set

>>> A = set()
>>> type(A)
<class 'set'>
>>> len(A)
0
>>> A
set()

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ мноТСства мноТСства ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ len.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ нСсколько элСмСнтов

>>> A.add(1)
>>> A
{1}
>>> A.add(2)
>>> A
{1, 2}
>>> A.add(2)
>>> A
{1, 2}

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ эффСкта Π½Π° мноТСство.

Π’Π°ΠΊΠΆΠ΅, ΠΈΠ· Π²Ρ‹Π²ΠΎΠ΄Π° Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠΌ мноТСства ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки {}, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ элСмСнты. Π’Π°ΠΊ, Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ способ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСпустоС мноТСство β€” Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠΌ

>>> B = {1, 2}
>>> B
{1, 2}

ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ добавлСния измСняСмого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка

>>> B.add([3,4,5])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

Π—Π΄Π΅ΡΡŒ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ массив Π² мноТСство B.

Π£ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ добавлСния set.add сущСствуСт обратная β€” опСрация удалСния set.remove

>>> B
{1, 2}
>>> B.remove(1)
>>> B
{2}
>>> B.remove(3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 3

ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ удалСния элСмСнта, Π½Π΅ входящСго Π² мноТСство, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка KeyError.

Однако, сущСствуСт ΠΌΠ΅Ρ‚ΠΎΠ΄ set.discard, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ удаляСт элСмСнт ΠΈΠ· мноТСства, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли этот элСмСнт присутствовал Π² Π½Ρ‘ΠΌ.

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π° Python ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Π΅ матСматичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ элСмСнта Π² мноТСство ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ логичСский ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

in

>>> B = {1, 2}
>>> B
{1, 2}
>>> 3 in B
False

Асимптотика x in set β€” O(1).

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ in Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ коллСкциями. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ подстроки Π² строку 'AA' in 'bbAAcc' ΠΈΠ»ΠΈ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ элСмСнта Π² массив 5 in [1, 2, 5, 6]. Асимптотики Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‚ΠΎΡ‡Π½ΡΡ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

ΠžΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ мноТСства

>>> A = {1, 2, 3}
>>> B = {1, 2, 3}
>>> A == B
True
>>> B.add(4)
>>> A
{1, 2, 3}
>>> B
{1, 2, 3, 4}
>>> A == B
False

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° нСстрогоС подмноТСство set.issubset

>>> A
{1, 2, 3}
>>> B
{1, 2, 3, 4}
>>> A.issubset(B)
True
>>> B.issubset(A)
False
>>> A.issubset(A)
True

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° нСстрогоС надмноТСство set.issuperset

>>> A
{1, 2, 3}
>>> B
{1, 2, 3, 4}
>>> A.issuperset(B)
False
>>> B.issuperset(A)
True
>>> B.issuperset(B)
True

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ получСния Π½ΠΎΠ²Ρ‹Ρ… мноТСств

>>> A = {1, 2, 4}
>>> B = {1, 2, 3}
>>> A. union(B)  # union - объСдинСниС мноТСств
{1, 2, 3, 4}
>>> A.intersection(B)  # intersection - пСрСсСчСниС
{1, 2}
>>> A.difference(B)  # difference - Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ мноТСств
{4}
>>> B.difference(A)
{3}
>>> A.symmetric_difference(B)  # symmetric_difference - симмСтричСская Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ
{3, 4}
>>> B.symmetric_difference(A)
{3, 4}

Бводная Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΠΎ мноТСствам (cheatsheet)

ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΡ

  • elem β€” Python-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚

  • A β€” мноТСство set

  • B, C,..

    1. Π’ случаС использования Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… A.method_name(B, C,..): B, C,.. ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΡŽΠ±Ρ‹ΠΌΠΈ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, {-1}.union(range(2)) == {-1, 0, 1} Π²Π΅Ρ€Π½Ρ‘Ρ‚ True.

    2. Π’ случаС использования c ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, A > B ΠΈΠ»ΠΈ A & B & C & …: B, C,.. ΡΠ²Π»ΡΡŽΡ‚ΡΡ мноТСствами. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ эти ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ для ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² Ρ‚ΠΈΠΏΠ° set (ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ frozenset, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠ·ΠΆΠ΅).

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡΠ‘ΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΠ’ΠΈΠΏ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°
Π’Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ элСмСнтаelem in Abool
РавСнствоA == Bbool
ЯвляСтся нСстрогим подмноТСством
A.issubset(B) ΠΈΠ»ΠΈ A <= Bbool
ЯвляСтся строгим подмноТСствомA < Bbool
ЯвляСтся нСстрогим надмноТСствомA.issuperset(B) ΠΈΠ»ΠΈ A >= Bbool
ЯвяляСтся строгим надмноТСствомA > Bbool
ОбъСдинСниС мноТСствA.union(B, C,..)set
A | B | C | …set
ΠŸΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠ΅ мноТСствA.intersection(B, C,..)set
A & B & C & …set
Π Π°Π·Π½ΠΎΡΡ‚ΡŒ мноТСствA. …set

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΡ… Π½ΠΎΠ²Ρ‹Π΅ мноТСства, сущСствуСт inplace Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹. Для ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² это Ρ‚Π΅ ΠΆΠ΅ названия, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с прСфиксом _update, Π° для ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² добавляСтся Π·Π½Π°ΠΊ равСнства =. НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ разности мноТСств

>>> A = {1, 2, 3, 4}
>>> B = {2, 4}
>>> A.difference_update(B)
>>> A
{1, 3}
>>> A = {1, 2, 3, 4}
>>> B = {2, 4}
>>> A -= B
>>> A
{1, 3}

НСизмСняСмыС мноТСства

Π’ Python сущСствуСт нСизмСняСмая вСрсия мноТСства β€” frozenset. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ мноТСства set, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Π³ΠΎ ΠΌΠ΅Π½ΡΡŽΡ‚.

НСизмСняСмыС мноТСства ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ…Π΅ΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, поэтому ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ элСмСнтами мноТСства set. Π’Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, мноТСство мноТСств, Π³Π΄Π΅ мноТСство set состоит ΠΈΠ· мноТСств Ρ‚ΠΈΠΏΠ° frozenset.

Для создания frozenset ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция

frozenset(iterable), Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

>>> FS = frozenset({1, 2, 3})
>>> FS
frozenset({1, 2, 3})
>>> A = {1, 2, 4}
>>> FS & A
frozenset({1, 2})
>>> A & FS
{1, 2}

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ созданиС frozenset ΠΈΠ· ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ мноТСства {1, 2, 3}. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСсСчСния &. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏΡƒ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π’Π°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ опСрациями Π½Π°Π΄ мноТСствами.

Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ (dictionary) Π² Python β€” это ассоциативный массив, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ Π½Π° ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ занятии. Ассоциативный массив это структура Π΄Π°Π½Π½Ρ‹Ρ…, содСрТащая ΠΏΠ°Ρ€Ρ‹ Π²ΠΈΠ΄Π° ΠΊΠ»ΡŽΡ‡:Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ»ΡŽΡ‡ΠΈ Π² ассоциативном массивС ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹.

Π’ Python Π΅ΡΡ‚ΡŒ встроСнный ассоциативный массив β€” dict.

Π•Π³ΠΎ рСализация основана Π½Π° Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ

  • ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ…Π΅ΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
  • Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ словаря

ΠŸΡƒΡΡ‚ΠΎΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ двумя способами:

>>> d1 = dict()
>>> d2 = {}
>>> d1
{}
>>> d2
{}
>>> type(d1)
<class 'dict'>
>>> type(d2)
<class 'dict'>

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнт Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобок:

>>> domains = {}
>>> domains['ru'] = 'Russia'
>>> domains['com'] = 'commercial'
>>> domains['org'] = 'organizations'
>>> domains
{'ru': 'Russia', 'com': 'commercial', 'org': 'organizations'}

Из этого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠΌ словаря ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ пСрСчислСны ΠΏΠ°Ρ€Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΊΠ»ΡŽΡ‡:Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. НапримСр, ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ domains ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ

domains = {'ru': 'Russia', 'com': 'commercial', 'org': 'organizations'}.

Доступ ΠΊ элСмСнту осущСствляСтся ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ:

>>> domains['com']
'commercial'
>>> domains['de']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'de'

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° del. Если ΠΊΠ»ΡŽΡ‡Π° Π² словарС Π½Π΅Ρ‚, ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ошибка KeyError

>>> domains
{'ru': 'Russia', 'com': 'commercial', 'org': 'organizations'}
>>> del domains['de']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'de'
>>> del domains['ru']
>>> domains
{'com': 'commercial', 'org': 'organizations'}

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, для добавлСния, получСния ΠΈ удалСния элСмСнтов Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ dict.setdefault, dict.get, dict.pop, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ задСйствуСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π½Π° случай, Ссли ΠΊΠ»ΡŽΡ‡Π° Π² словарС Π½Π΅Ρ‚

>>> d1 = {}
>>> d1.setdefault('a', 10)
10
>>> d1. setdefault('b', 20)
20
>>> d1
{'a': 10, 'b': 20}
>>> d1.setdefault('c')
>>> d1
{'a': 10, 'b': 20, 'c': None}
>>> d1.setdefault('a', 123)
10
>>> d1
{'a': 10, 'b': 20, 'c': None}
>>> d1.get('a')
10
>>> d1.get('d')  # Π²Π΅Ρ€Π½ΡƒΠ» None
>>> d1.get('d', 'NoKey')
'NoKey'
>>> d1.pop('d')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'd'
>>> d1.pop('d', 255)
255
>>> d1
{'a': 10, 'b': 20, 'c': None}
>>> d1.pop('a', 255)
10
>>> d1
{'b': 20, 'c': None}
ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎ числовых ΠΊΠ»ΡŽΡ‡Π°Ρ…

ΠšΠ»ΡŽΡ‡ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΈ число: int ΠΈΠ»ΠΈ float. Однако ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со словарями Π² Python ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Π²Π° ΠΊΠ»ΡŽΡ‡Π° Ρ€Π°Π·Π½Ρ‹Π΅, Ссли для Π½ΠΈΡ… Π²Π΅Ρ€Π½ΠΎ k1 != k2 # True.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

>>> d = {0: 10}
>>> d
{0: 10}
>>> d[0] = 22
>>> d
{0: 22}
>>> d[0.0] = 33
>>> d
{0: 33}
>>> 0. 0 != 0
False

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ возмоТности ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π² качСствС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ float-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ИспользованиС DictView: Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈ мноТСствСнныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Если ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠΎ ΡΠ»ΠΎΠ²Π°Ρ€ΡŽ, Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ

>>> d = {'a': 10, 'c': 30, 'b': 20}
>>> for k in d:
...     print(k)
...
a
c
b

Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ, значСниям ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Π°ΠΌ ΠΊΠ»ΡŽΡ‡:Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, содСрТащиСся Π² словарС. Для этого ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ dict.keys(), dict.values(), dict.items(). Они Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ DictView ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ†ΠΈΠΊΠ»Π°Ρ…:

>>> d = {'a': 10, 'c': 30, 'b': 20}
>>> for k in d.keys():
...     print(k)
...
a
c
b
>>> for v in d.values():
...     print(v)
...
10
30
20
>>> for k, v in d.items():
...     print(k, v)
...
a 10
c 30
b 20

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ DictView, содСрТащиС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ»ΡŽΡ‡ΠΈ, Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ мноТСствам. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли DictView ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΏΠ°Ρ€ содСрТат нСизмСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Ρ‚ΠΎΠΆΠ΅ Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ мноТСствам. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Π΅ для мноТСств ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСсСчСния, вхоТдСния ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с DictView.

>>> d
{'a': 10, 'c': 30, 'b': 20}
>>> dkeys = d.keys()
>>> 'abc' in dkeys
False
>>> 'c' in dkeys
True
>>> {'a', 'b', 'c'} == dkeys
True
>>> dkeys & {'b', 'c', 'd'}
{'b', 'c'}

Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ с упорядочСнными ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ OrderedDict

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ понадобится для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π·Π°Π΄Π°Ρ‡ Π½Π° ejudge.

Если Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½Π° Ρ†ΠΈΠΊΠ»Ρ‹ Π²Ρ‹ΡˆΠ΅, Ρ‚ΠΎ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ порядок итСрирования Π² Ρ†ΠΈΠΊΠ»Π°Ρ… совпадаСт с порядком добавлСния элСмСнтов Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ.

Однако, Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρƒ стандартных словарСй dict гарантируСтся, начиная с вСрсии 3.7 (Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π±Ρ‹Π»ΠΈ сдСланы ΠΈΠ·-ΠΏΠΎΠ΄ вСрсии 3.7.4). Π£Π·Π½Π°Ρ‚ΡŒ свою Π²Π΅Ρ€ΡΠΈΡŽ Python ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° python3 β€”version ΠΈΠ»ΠΈ зайдя Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ (вСрсия Π±ΡƒΠ΄Π΅Ρ‚ написана свСрху).

Если для вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π°ΠΆΠ½ΠΎ упорядочиваниС элСмСнтов, Π½ΠΎ Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊΠΎΠΉ вСрсии ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ваш скрипт, Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ упорядочСнной вСрсиСй словарСй OrderedDict.

Она находится Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ collections.

УпорядочСнный ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ.

>>> import collections
>>> od = collections.OrderedDict()
>>> od
OrderedDict()
>>> od['a'] = 10
>>> od['c'] = 30
>>> od['b'] = 20
>>> od
OrderedDict([('a', 10), ('c', 30), ('b', 20)])

Python 3: ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ мноТСствами: Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅, пСрСсСчСниС, объСдинСниС, сравнСниС

Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π½Π° Π²ΠΈΠ΄Π΅ΠΎ

На этом занятии ΠΌΡ‹ рассмотрим нСсколько ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с мноТСствами, Π° Ρ‚Π°ΠΊΠΆΠ΅ вопросы, связанныС с опСрациями Π½Π°Π΄ мноТСствами ΠΈ ΠΈΡ… сравнСния.

Для опрСдСлСния Π΄Π»ΠΈΠ½Ρ‹ (числа элСмСнтов) мноТСства ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция len:

a={"abc", (1,2), 5, 4, True}
len(a)

Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ наличия значСния Π² мноТСствС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ in:

"abc" in a

Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ имССтся ΠΈ False Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС. Или ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π° Π½Π΅ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ значСния:

7 not in a

ΠŸΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠ΅ мноТСств

Для Π»ΡŽΠ±Ρ‹Ρ… Π΄Π²ΡƒΡ… мноТСств:

setA = {1,2,3,4}
setB = {3,4,5,6,7}

ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ΠΈΡ… пСрСсСчСниС, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ значСния, входящиС Π² состав ΠΎΠ±ΠΎΠΈΡ… мноТСств. Π­Ρ‚ΠΎ дСлаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° &:

setA & setB

Π—Π΄Π΅ΡΡŒ создаСтся Π½ΠΎΠ²ΠΎΠ΅ мноТСство с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ значСниями. Π‘Π°ΠΌΠΈ исходныС мноТСства ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ссылку Π½Π° этот Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

res = setA & setB

Или, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

setA = setA & setB

это ΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ эквивалСнтно Ρ‚Π°ΠΊΠΎΠΉ записи:

setA &= setB

Если ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΡ…ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎΡ‚ с Ρ‚Π°ΠΊΠΈΠΌ мноТСством:

setC = {9, 10, 11}

Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ:

setA & setC

Π±ΡƒΠ΄Π΅Ρ‚ пустоС мноТСство.

Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эквивалСнтным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ intersection:

setA = {1,2,3,4}
setB = {3,4,5,6,7}
setA.intersection(setB)

ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ пСрСсСчСния этих мноТСств. Π‘Π°ΠΌΠΈ ΠΆΠ΅ мноТСства ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π΅Π³ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚Π°ΠΊ:

res = setA.intersection(setB)

Но Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ эквивалСнт Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

setA &= setB

Ρ‚ΠΎ для этого слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ intersection_update:

setA.intersection_update(setB)

Π’Π΅ΠΏΠ΅Ρ€ΡŒ мноТСство seta Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ пСрСсСчСния.

ОбъСдинСниС мноТСств

ΠŸΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Π°Ρ опСрация – объСдинСниС Π΄Π²ΡƒΡ… мноТСств выполняСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° |:

setA = {1,2,3,4}
setB = {3,4,5,6,7}
setA | setB

Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½ΠΎΠ²ΠΎΠ΅ мноТСство Π½Π΅ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· ΠΎΠ±ΠΎΠΈΡ… мноТСств:

{1, 2, 3, 4, 5, 6, 7}

Π­Ρ‚Ρƒ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ Ρ‚Π°ΠΊ:

setA |= setB

Ρ‚ΠΎΠ³Π΄Π° Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ объСдинСния Π±ΡƒΠ΄Π΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ пСрСмСнная setA. Или ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ

setA.union(setB)

ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ мноТСство ΠΈΠ· ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Вычитания мноТСств

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ опСрация – это Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ мноТСств. НапримСр, для мноТСств:

setA = {1,2,3,4}
setB = {3,4,5,6,7}

опСрация

setA - setB

Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ Π½ΠΎΠ²ΠΎΠ΅ мноТСство, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ· мноТСства setA Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ всС значСния, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² мноТСствС setB:

{1, 2}

Или, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΈΠ· мноТСства setB Π²Ρ‹Ρ‡Π΅ΡΡ‚ΡŒ мноТСство setA:

setB – setA

ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ значСния

{5, 6, 7}

ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, входящиС Π² мноТСство setA.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ эквивалСнтныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

setA -= setB  # setA = setA - setB
setB -= setA  # setB = setB - setA

Π’ этом случаС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ setA ΠΈ setB Π±ΡƒΠ΄ΡƒΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠΉ. setB

Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, мноТСство, составлСнноС ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π½Π΅ входящих ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π² ΠΎΠ±Π° мноТСства. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

{1, 2, 5, 6, 7}

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ мноТСств

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ собой:

На равСнство

setA == setB

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ False, Ρ‚.ΠΊ. мноТСства Π½Π΅ Ρ€Π°Π²Π½Ρ‹. Они ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ, Ссли всС элСмСнты, входящиС Π² ΠΎΠ΄Π½ΠΎ мноТСство, Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ мноТСству ΠΈ мощности этих мноТСств Ρ€Π°Π²Π½Ρ‹ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ΠΈ содСрТат ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ число элСмСнтов). НапримСр, Ρ‚Π°ΠΊΠΈΠ΅:

setA = {7,6,5,4,3}; setB = {3,4,5,6,7}

Ρ‚ΠΎΠ³Π΄Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

setA == setB

Π²Π΅Ρ€Π½Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, порядок элСмСнтов Π² мноТСствах Π½Π΅ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ€ΠΎΠ»ΠΈ ΠΏΡ€ΠΈ ΠΈΡ… сравнСнии.

На нСравСнство

ΠŸΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅ сравнСниС Π½Π° нСравСнство записываСтся Ρ‚Π°ΠΊ:

setA != setB

ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли мноТСства Π½Π΅ Ρ€Π°Π²Π½Ρ‹ ΠΈ False, Ссли Ρ€Π°Π²Π½Ρ‹.

На большС, мСньшС

Π’ Python ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ <, > ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ мноТСствам, ΠΏΠΎ сути, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π½Π΅ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ мноТСства Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈ, ΠΎΠ΄Π½ΠΎ мноТСство ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ (Π²Ρ…ΠΎΠ΄ΠΈΡ‚) Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, Ссли всС элСмСнты ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ мноТСства ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ элСмСнтам Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ мноТСства:

НапримСр, возьмСм мноТСства

setA = {7,6,5,4,3}; setB = {3,4,5}

Ρ‚ΠΎΠ³Π΄Π° опСрация

setB < setA

Π²Π΅Ρ€Π½Π΅Ρ‚ True, Π° опСрация

setA < setB

Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ False. Но, Ссли хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ элСмСнт мноТСства setB Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ мноТСству setA:

setB.add(22)

Ρ‚ΠΎ ΠΎΠ±Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ False.

Для Ρ€Π°Π²Π½Ρ‹Ρ… мноТСств

setA = {7,6,5,4,3}; setB = {3,4,5,6,7}

ΠΎΠ±Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π²Π΅Ρ€Π½ΡƒΡ‚ False. Но Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹:

setA <= setB
setA >= setB

Π²Π΅Ρ€Π½ΡƒΡ‚ True.

Π­Ρ‚ΠΎ основныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ мноТСствами. Π’ качСствС ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ задания Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΈΠ· Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ тСкста опрСдСляСт число ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… слов. Для простоты ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ слова Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ ΠΈΠ»ΠΈ символом пСрСноса строки β€˜\n’.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

#1. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ знакомство с Python Установка Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€

#2. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ исполнСния ΠΊΠΎΠΌΠ°Π½Π΄. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² PyCharm

#3. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ type ΠΈ id

#4. ЧисловыС Ρ‚ΠΈΠΏΡ‹, арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

#5. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ math

#6. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ print() ΠΈ input(). ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ строк Π² числа int() ΠΈ float()

#7. ЛогичСский Ρ‚ΠΈΠΏ bool. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сравнСния ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ and, or, not

#8. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² строки. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ строками

#9. Знакомство с индСксами ΠΈ срСзами строк

#10. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ строк

#11. БпСцсимволы, экранированиС символов, row-строки

#12. Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ строк: ΠΌΠ΅Ρ‚ΠΎΠ΄ format ΠΈ F-строки

#13. Бписки β€” ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ

#14. Π‘Ρ€Π΅Π·Ρ‹ списков ΠΈ сравнСниС списков

#15. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ списков

#16. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ списки, ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ списки

#17. Условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ if-else

#18. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ условия ΠΈ мноТСствСнный Π²Ρ‹Π±ΠΎΡ€. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ if-elif-else

#19. Π’Π΅Ρ€Π½Π°Ρ€Π½Ρ‹ΠΉ условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Π’Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Ρ‚Π΅Ρ€Π½Π°Ρ€Π½ΠΎΠ΅ условиС

#20. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π° while

#21. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ² break, continue ΠΈ else

#22. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π° for. Ѐункция range()

#23. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ†ΠΈΠΊΠ»Π° for. Ѐункция enumerate()

#24. Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ iter() ΠΈ next()

#25. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π·Π°Π΄Π°Ρ‡ с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ

#26. Π’Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Паскаля ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ²

#27. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ списков (List comprehensions)

#28. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ списков

#29. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² словари (dict). Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ словарями

#30. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ словаря, ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ элСмСнтов словаря Π² Ρ†ΠΈΠΊΠ»Π΅

#31. ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ (tuple) ΠΈ ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

#32. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π° (set) ΠΈ ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

#33. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ мноТСствами, сравнСниС мноТСств

#34. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ мноТСств ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ словарСй

#35. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ: ΠΏΠ΅Ρ€Π²ΠΎΠ΅ знакомство, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ def ΠΈ ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²

#36. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return Π² функциях. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

#37. Алгоритм Π•Π²ΠΊΠ»ΠΈΠ΄Π° для нахоТдСния ΠΠžΠ”

#38. Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. ЀактичСскиС ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

#39. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ числом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² *args ΠΈ **kwargs

#40. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ * ΠΈ ** для ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ распаковки ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ

#41. РСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

#42. АнонимныС (lambda) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

#43. ΠžΠ±Π»Π°ΡΡ‚ΠΈ видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова global ΠΈ nonlocal

#44. Замыкания Π² Python

#45. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

#46. Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ свойств Π΄Π΅ΠΊΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

#47. Π˜ΠΌΠΏΠΎΡ€Ρ‚ стандартных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ import ΠΈ from

#48. Π˜ΠΌΠΏΠΎΡ€Ρ‚ собствСнных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

#49. Установка сторонних ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ (pip install). ΠŸΠ°ΠΊΠ΅Ρ‚Π½Π°Ρ установка

#50. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ (package) Π² Python. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹

#51. Ѐункция open. Π§Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»Π°

#52. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ FileNotFoundError ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ контСкста (with) для Ρ„Π°ΠΉΠ»ΠΎΠ²

#53. Π—Π°ΠΏΠΈΡΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ» Π² тСкстовом ΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ…

#54. ВыраТСния Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

#55. Ѐункция-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ yield

#56. Ѐункция map. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π΅Π΅ использования

#57. Ѐункция filter для ΠΎΡ‚Π±ΠΎΡ€Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

#58. Ѐункция zip. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования

#59. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° sort ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sorted

#60. АргумСнт key для сортировки ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ

#61. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ isinstance ΠΈ type для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…

#62. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ all ΠΈ any. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΡ… использования

#63. Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ прСдставлСниС чисСл. БистСмы счислСния

#64. Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ И, Π˜Π›Π˜, НЕ, XOR. Π‘Π΄Π²ΠΈΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

#65. ΠœΠΎΠ΄ΡƒΠ»ΡŒ random стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

#66. Аннотация Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ

#67. Аннотации Ρ‚ΠΈΠΏΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ

#68. Аннотации Ρ‚ΠΈΠΏΠΎΠ² Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ классов

#69. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ match/case. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ знакомство

#70. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ match/case с ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ ΠΈ списками

#71. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ match/case со словарями ΠΈ мноТСствами

#72. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ match/case. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈ особСнности использования

collections.abc β€” АбстрактныС Π±Π°Π·ΠΎΠ²Ρ‹Π΅ классы для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² β€” ДокумСнтация Python 3.11.3

НовоС Π² вСрсии 3.3: Π Π°Π½Π΅Π΅ этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π±Ρ‹Π» Ρ‡Π°ΡΡ‚ΡŒΡŽ модуля collections .

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄: Lib/_collections_abc.py


Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ прСдоставляСт абстрактныС Π±Π°Π·ΠΎΠ²Ρ‹Π΅ классы, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΎΠ³ΠΎ, прСдоставляСт Π»ΠΈ класс ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ интСрфСйс; для Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, являСтся Π»ΠΈ ΠΎΠ½ Ρ…ΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΈΠ»ΠΈ являСтся ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

issubclass() ΠΈΠ»ΠΈ isinstance() тСст для интСрфСйса Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… способов.

1) Π’Π½ΠΎΠ²ΡŒ написанный класс ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ нСпосрСдствСнно ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· абстрактныС Π±Π°Π·ΠΎΠ²Ρ‹Π΅ классы. Класс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ примСси происходят ΠΎΡ‚ наслСдования ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ пСрСопрСдСляСтся ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости:

 класс C(ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ): # ΠŸΡ€ΡΠΌΠΎΠ΅ наслСдованиС
    def __init__(self): ... # Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ ABC
    def __getitem__(self, index): ... # ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄
    def __len__(self): ... # ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄
    def count(self, value): ... # ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ примСси
 
 >>> issubclass(C, ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ)
Π˜ΡΡ‚ΠΈΠ½Π½Ρ‹ΠΉ
>>> isinstance(C(), ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ)
Π˜ΡΡ‚ΠΈΠ½Π½Ρ‹ΠΉ
 

2) Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ классы ΠΈ встроСнныС классы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ зарСгистрированы ΠΊΠ°ΠΊ Β«Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ подклассы» Π°Π·Π±ΡƒΠΊΠΈ. Π­Ρ‚ΠΈ классы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ API Π²ΠΊΠ»ΡŽΡ‡Π°Ρ всС абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ примСсСй. Π­Ρ‚ΠΎ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° тСсты issubclass() ΠΈΠ»ΠΈ isinstance() . Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, поддСрТиваСтся Π»ΠΈ ΠΏΠΎΠ»Π½Ρ‹ΠΉ интСрфСйс. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ для ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ автоматичСски выводятся ΠΈΠ· ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… API:

 класс D: # Π‘Π΅Π· наслСдования
    def __init__(self): ... # Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ ABC
    def __getitem__(self, index): ... # Абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄
    def __len__(self): ... # Абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄
    def count(self, value): ... # ΠœΠ΅Ρ‚ΠΎΠ΄ Mixin
    def index(self, value): ... # ΠœΠ΅Ρ‚ΠΎΠ΄ Mixin
Sequence.register(D) # РСгистрация вмСсто наслСдования
 
 >>> issubclass(D, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ)
Π˜ΡΡ‚ΠΈΠ½Π½Ρ‹ΠΉ
>>> isinstance(D(), ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ)
Π˜ΡΡ‚ΠΈΠ½Π½Ρ‹ΠΉ
 

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ класс D Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ __содСрТит__ , __iter__ ΠΈ __reversed__ , ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅, итСрация Π»ΠΎΠ³ΠΈΠΊΠ°, ΠΈ функция reversed() автоматичСски возвращаСтся ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ __getitem__ ΠΈ __len__ .

3) НСкоторыС простыС интСрфСйсы Π»Π΅Π³ΠΊΠΎ ΡƒΠ·Π½Π°Π²Π°Π΅ΠΌΡ‹ ΠΏΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΡŽ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (Ссли эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΈ установлСны Π½Π° НСт ):

 класс Π•:
    Π΄Π΅Ρ„ __iter__(я): ...
    Π΄Π΅Ρ„ __ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ__(ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ): ...
 
 >>> issubclass(E, Iterable)
Π˜ΡΡ‚ΠΈΠ½Π½Ρ‹ΠΉ
>>> isinstance(E(), Iterable)
Π˜ΡΡ‚ΠΈΠ½Π½Ρ‹ΠΉ
 

Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ интСрфСйсы Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ этот послСдний ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ интСрфСйс β€” это большС, Ρ‡Π΅ΠΌ просто Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΈΠΌΠ΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ сСмантику ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ выводится ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ· наличия ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Для Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, зная, Ρ‡Ρ‚ΠΎ класс прСдоставляСт __getitem__ , __len__ ΠΈ __iter__ нСдостаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ .

НовоС Π² вСрсии 3.9: эти абстрактныС классы Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ [] . Π‘ΠΌ. ΠΎΠ±Ρ‰ΠΈΠΉ Ρ‚ΠΈΠΏ псСвдонима ΠΈ PEP 585 .

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ АбстрактныС Π±Π°Π·ΠΎΠ²Ρ‹Π΅ классы

ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ABC:

Азбука

НаслСдуСтся ΠΎΡ‚

АбстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ смСшивания

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ 1

__содСрТит__

Π₯ΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ 1

__Ρ…ΡΡˆ__

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΡ‹ΠΉ 1 2

__ΠΈΡ‚Π΅Ρ€__

Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ 1

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΡ‹ΠΉ

__ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ__

__ΠΈΡ‚Π΅Ρ€__

РСвСрсивный 1

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΡ‹ΠΉ

__ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ__

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ 1

Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€

ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ , Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ

Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ , __iter__ , __next__

Π Π°Π·ΠΌΠ΅Ρ€ 1

__len__

Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ 1

__Π²Ρ‹Π·ΠΎΠ²__

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ 1

Π Π°Π·ΠΌΠ΅Ρ€ , ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΡ‹ΠΉ , ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€

__содСрТит__ , __ΠΈΡ‚Π΅Ρ€__ , __len__

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

РСвСрсивный , ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ

__getitem__ , __len__

__содСрТит__ , __iter__ , __reversed__ , индСкс ΠΈ количСство

ИзмСняСмая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

__getitem__ , __setitem__ , __delitem__ , __len__ , вставка

УнаслСдовано ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ , Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ , Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ , ΠΏΠΎΠΏ , ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈ __iadd__

Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π±Π°ΠΉΡ‚ΠΎΠ²

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

__getitem__ , __len__

УнаслСдованный ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ

__содСрТит__ , __ΠΈΡ‚Π΅Ρ€__ , __len__

__le__ , __lt__ , __eq__ , __ne__ , __gt__ , __ge__ , __ΠΈ__ , __ΠΈΠ»ΠΈ__ , __sub__ , __xor__ ΠΈ Π½Π΅ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ

ΠœΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€

ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚

__содСрТит__ , __ΠΈΡ‚Π΅Ρ€__ , __len__ , Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ , Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ

УнаслСдовано Набор ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ , ΠΏΠΎΠΏ , ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ , __ior__ , __iand__ , __ixor__ ΠΈ __isub__

ΠšΠ°Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ

__getitem__ , __iter__ , __len__

__содСрТит__ , ΠΊΠ»ΡŽΡ‡Π΅ΠΉ , элСмСнтов , Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ , ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ , __eq__ ΠΈ __ne__

ΠœΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

ΠšΠ°Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

__getitem__ , __setitem__ , __delitem__ , __ΠΈΡ‚Π΅Ρ€__ , __len__

УнаслСдованныС БопоставлСниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ pop , popitem , clear , update , ΠΈ setdefault

MappingView

Π Π°Π·ΠΌΠ΅Ρ€Ρ‹

__len__

ItemView

MappingView , ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚

__содСрТит__ , __ΠΈΡ‚Π΅Ρ€__

KeysView

MappingView , ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚

__содСрТит__ , __ΠΈΡ‚Π΅Ρ€__

ValuesView

MappingView , ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ

__содСрТит__ , __ΠΈΡ‚Π΅Ρ€__

ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ 1

__ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅__

ΠšΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° 1

ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ

ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ , Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ

Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ

Асинхронный 1

__aiter__

Асинхронный ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ 1

Асинхронный

__next__

__aiter__

Асинхронный Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ 1

Асинхронный ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€

ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ , ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ

рядом , __aiter__ , __anext__

Бноски

1(1,2,3,4,5,6,7,8,9,10,11,12,13,14)

Π­Ρ‚ΠΈ ABC ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ . __subclasshook__() для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ тСстированиС интСрфСйса ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ наличия Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Π½Π΅ Π±Ρ‹Π»ΠΈ установлСны Π½Π° None . Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для простых интСрфСйсы. Π‘ΠΎΠ»Π΅Π΅ слоТныС интСрфСйсы Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ рСгистрации ΠΈΠ»ΠΈ прямой подклассы.

2

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° isinstance(obj, Iterable) ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ зарСгистрированы ΠΊΠ°ΠΊ Iterable ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ __iter__() ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½ΠΎ ΠΎΠ½ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ с __getitem__() ΠΌΠ΅Ρ‚ΠΎΠ΄. ЕдинствСнный Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ способ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ являСтся Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ, это Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ iter(obj) .

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ АбстрактныС Π±Π°Π·ΠΎΠ²Ρ‹Π΅ классы – ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ описания

класс collections.abc.Container

ABC для классов, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ __contains__() .

класс collections.abc.Hashable

ABC для классов, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ __hash__() .

класс collections.abc.Sized

ABC для классов, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ __len__() .

класс collections.abc.Callable

ABC для классов, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ __call__() .

класс collections.abc.Iterable

ABC для классов, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ __iter__() .

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° isinstance(obj, Iterable) ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ зарСгистрированныС классы ΠΊΠ°ΠΊ Iterable ΠΈΠ»ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ __iter__() , Π½ΠΎ ΠΎΠ½ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ __getitem__() 9ΠœΠ΅Ρ‚ΠΎΠ΄ 0004. ЕдинствСнный Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ способ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ это Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ iter(obj) .

класс collections.abc.Collection

ABC для Ρ€Π°Π·ΠΌΠ΅Ρ€Π½Ρ‹Ρ… классов ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

НовоС Π² вСрсии 3. 6.

класс collections.abc.Iterator

ABC для классов, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… __iter__() ΠΈ __next__() ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€.

класс collections.abc.Reversible

ABC для ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ __reversed__() ΠΌΠ΅Ρ‚ΠΎΠ΄.

НовоС Π² вСрсии 3.6.

класс collections.abc.Generator

ABC для классов Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² PEP 342 , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ send() , Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ() ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ() ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

НовоС Π² вСрсии 3.5.

класс collections.abc.Sequence
класс collections.abc.MutableSequence
класс collections.abc.ByteString

ABC для доступных Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния ΠΈ измСняСмых ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΏΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΡŽ: Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ примСсСй, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ __iter__() , __reversed__() ΠΈ index() , ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° __getitem__() . Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ссли __getitem__() Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ с константой ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ доступа, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ примСсСй Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π»ΠΈΠ½Π΅ΠΉΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ; ΠΎΠ΄Π½Π°ΠΊΠΎ, Ссли Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ являСтся Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌ (ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ Π±Ρ‹ с связанный список), миксины Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ скорСС всСго Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΡˆΠΈΠ²Π°Ρ‚ΡŒ.

ИзмСнСно Π² вСрсии 3.5: Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄ index() Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​поддСрТка stop ΠΈ start Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹.

класс collections.abc.Set
класс collections.abc.MutableSet

ABC для доступных Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния ΠΈ измСняСмых Π½Π°Π±ΠΎΡ€ΠΎΠ².

класс collections.abc.Mapping
класс collections.abc.MutableMapping

ABC для доступных Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния ΠΈ измСняСмых сопоставлСний.

класс collections.abc.MappingView
класс collections.abc.ItemsView
класс collections.abc.KeysView
класс collections.abc.ValuesView

ABC для прСдставлСния отобраТСния, элСмСнтов, ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

класс collections.abc.Awaitable

ABC для ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² await выраТСния. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ __await__() ΠΌΠ΅Ρ‚ΠΎΠ΄.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Coroutine ΠΈ экзСмпляры Coroutine ABC β€” всС экзСмпляры этой ABC.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π’ CPython сопрограммы Π½Π° основС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° (Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΡƒΠΊΡ€Π°ΡˆΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠΎΠ².coroutine() ) ΡΠ²Π»ΡΡŽΡ‚ΡΡ awaitables , хотя Ρƒ Π½ΠΈΡ… Π½Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° __await__() . ИспользованиС isinstance(gencoro, Awaitable) для Π½ΠΈΡ… Π²Π΅Ρ€Π½Π΅Ρ‚ False . Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ inspect. isawaitable() для ΠΈΡ… обнаруТСния.

НовоС Π² вСрсии 3.5.

класс collections.abc.Coroutine

ABC для классов, совмСстимых с сопрограммами. Они Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² Coroutine Objects: ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ() , Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ() ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ() . ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ __ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅__() . ВсС экзСмпляра Coroutine Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ экзСмплярами ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ . Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ сопрограммы.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π’ CPython сопрограммы Π½Π° основС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° (Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΡƒΠΊΡ€Π°ΡˆΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠΎΠ².coroutine() ) ΡΠ²Π»ΡΡŽΡ‚ΡΡ awaitables , хотя Ρƒ Π½ΠΈΡ… Π½Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° __await__() . ИспользованиС isinstance(gencoro, Coroutine) для Π½ΠΈΡ… Π²Π΅Ρ€Π½Π΅Ρ‚ False . Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ inspect.isawaitable() для ΠΈΡ… обнаруТСния.

НовоС Π² вСрсии 3.5.

класс collections. abc.AsyncIterable

ABC для классов, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… __aiter__ ΠΌΠ΅Ρ‚ΠΎΠ΄. Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ асинхронного ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ.

НовоС Π² вСрсии 3.5.

класс collections.abc.AsyncIterator

ABC для классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ __aiter__ ΠΈ __anext__ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ асинхронного ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

НовоС Π² вСрсии 3.5.

класс collections.abc.AsyncGenerator

ABC для классов асинхронных Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π² PEP 525 ΠΈ PEP 492 .

НовоС Π² вСрсии 3.6.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈ Ρ€Π΅Ρ†Π΅ΠΏΡ‚Ρ‹

ABC ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ классы ΠΈΠ»ΠΈ экзСмпляры, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π»ΠΈ ΠΎΠ½ΠΈ конкрСтная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π Π°Π·ΠΌΠ΅Ρ€
 = НСт
Ссли isinstance (myvar, collections.abc.Sized):
    Ρ€Π°Π·ΠΌΠ΅Ρ€ = Π΄Π»ΠΈΠ½Π° (ΠΌΠΎΠΉΠ²Π°Ρ€)
 

НСкоторыС ΠΈΠ· ABC Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ Π² качСствС примСсСй, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ классы, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ API-интСрфСйсы ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ класс, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»Π½Ρ‹ΠΉ УстановитС API, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: __contains__() , __iter__() ΠΈ __len__() . ABC прСдоставляСт ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ __and__() ΠΈ isdisjoint() :

 класс ListBasedSet (ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.abc.Set):
    ''' РСализация Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ отдаСтся пространству, Π° Π½Π΅ скорости
        ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ элСмСнты Π½Π°Π±ΠΎΡ€Π° Π±Ρ‹Π»ΠΈ Ρ…Π΅ΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ. '''
    def __init__(ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, повторяСмый):
        self.elements = lst = []
        для значСния Π² ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ:
            Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π² спискС:
                lst.append(Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)
    Π·Π°Ρ‰ΠΈΡ‚Π° __iter__(я):
        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ (self.elements)
    def __contains__(я, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅):
        Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² self.elements
    Π·Π°Ρ‰ΠΈΡ‚Π° __len__(я):
        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ len(self.elements)
s1 = ListBasedSet('abcdef')
s2 = ListBasedSet('defghi')
ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ = s1 & s2 # ΠœΠ΅Ρ‚ΠΎΠ΄ __and__() поддСрТиваСтся автоматичСски
 

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎ использованию Set ΠΈ MutableSet Π² качСствС миксина:

  1. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅ Π½Π°Π±ΠΎΡ€Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ миксина ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. способ создания Π½ΠΎΠ²Ρ‹Ρ… экзСмпляров ΠΈΠ· ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса прСдполагаСтся ΠΈΠΌΠ΅Ρ‚ΡŒ подпись Π² Ρ„ΠΎΡ€ΠΌΠ΅ ClassName(iterable) . Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ учитываСтся Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ класса, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ _from_iterable() , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ cls(iterable) для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π°. Если Mixin Set ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² классС с Π΄Ρ€ΡƒΠ³ΠΈΠΌ подпись конструктора, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ _from_iterable() с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° класса ΠΈΠ»ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ экзСмпляры ΠΈΠ· повторяСмый Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚.

  2. Для пСрСопрСдСлСния сравнСний (ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для скорости, Ρ‚.ΠΊ. сСмантика исправлСна), ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ __le__() ΠΈ __ge__() , Ρ‚ΠΎΠ³Π΄Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ автоматичСски ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ.

  3. Set mixin прСдоставляСт ΠΌΠ΅Ρ‚ΠΎΠ΄ _hash() для вычислСния значСния Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π·Π° Π½Π°Π±ΠΎΡ€; ΠΎΠ΄Π½Π°ΠΊΠΎ __hash__() Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ всС Π½Π°Π±ΠΎΡ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ…Π΅ΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΈΠ»ΠΈ нСизмСняСмыми. Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π½Π°Π±ΠΎΡ€Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ миксинов, Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ Set() ΠΈ Hashable() , Π·Π°Ρ‚Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ __Ρ…ΡΡˆ__ = Set._Ρ…ΡΡˆ .

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

  • Π Π΅Ρ†Π΅ΠΏΡ‚ OrderedSet для ΠΏΡ€ΠΈΠΌΠ΅Ρ€ построСн Π½Π° MutableSet .

  • Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎΠ± ABC см. Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ abc ΠΈ PEP 3119 .

ABC Set - ΠŸΠΎΠ΄Π°Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΠΎ ΡƒΡ…ΠΎΠ΄Ρƒ Π·Π° ΠΊΠΎΠΆΠ΅ΠΉ для очищСния ΠΊΠΎΠΆΠΈ, ΠΏΡ€ΠΎΡ‚ΠΈΠ² старСния, ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΌΠΎΡ€Ρ‰ΠΈΠ½ – My Organic Zone

ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅

1 / ΠΈΠ· 1

ΠŸΡ€ΠΎΡΡ‚Π°Ρ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ нашСм стартовом Π½Π°Π±ΠΎΡ€Π΅

Как

НачнитС эту Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ с нашСго Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΡ‡ΠΈΡ‰Π°ΡŽΡ‰Π΅Π³ΠΎ срСдства для Π»ΠΈΡ†Π°. Π‘ΡƒΠ΄ΡŒ Ρ‚ΠΎ Π² Π΄ΡƒΡˆΠ΅ ΠΈΠ»ΠΈ Π½Π°Π΄ Ρ€Π°ΠΊΠΎΠ²ΠΈΠ½ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ»ΡƒΡŽ Π²ΠΎΠ΄Ρƒ ΠΈ создайтС Π»Π΅Π³ΠΊΡƒΡŽ ΠΏΠ΅Π½Ρƒ. Аккуратно помассируйтС Π»ΠΈΡ†ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π³Ρ€ΡΠ·ΡŒ ΠΈ Π±Π°ΠΊΡ‚Π΅Ρ€ΠΈΠΈ. Π£Π΄Π°Π»ΠΈΡ‚Π΅ Ρ‚Π΅ΠΏΠ»ΠΎΠΉ Π²ΠΎΠ΄ΠΎΠΉ ΠΈ Π²Ρ‹ΡΡƒΡˆΠΈΡ‚Π΅.

ПослС высыхания нанСситС нСсколько капСль нашСй сыворотки с Π³ΠΈΠ°Π»ΡƒΡ€ΠΎΠ½ΠΎΠ²ΠΎΠΉ кислотой Π½Π° Π»ΠΈΡ†ΠΎ (ΠΈ, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Π½Π° шСю), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ ΡƒΠ²Π»Π°ΠΆΠ½ΠΈΡ‚ΡŒ всС слои ΠΊΠΎΠΆΠΈ. ΠžΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π½Π° нСсколько ΠΌΠΈΠ½ΡƒΡ‚, ΠΏΠΎΠΊΠ° Π½Π΅ высохнСт.

НаконСц, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ этот послСдний Π·Π°Ρ‰ΠΈΡ‚Π½Ρ‹ΠΉ слой ΡƒΡΠΏΠΎΠΊΠ°ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ увлаТнСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нашСго ΠΊΡ€Π΅ΠΌΠ° с Ρ€Π΅Ρ‚ΠΈΠ½ΠΎΠ»ΠΎΠΌ для Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π°.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ

Π’ΠΈΠΏΡ‹ ΠΊΠΎΠΆΠΈ: ΠΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ + Жирная + ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Π°Ρ + Бухая + Π§ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ
ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΡƒΡ…ΠΎΠ΄Π° Π·Π° ΠΊΠΎΠΆΠ΅ΠΉ: Бухая ΠΊΠΎΠΆΠ°, ΡΡ‚Π°Ρ€Π΅ΡŽΡ‰Π°Ρ ΠΊΠΎΠΆΠ°, ΠΌΠΎΡ€Ρ‰ΠΈΠ½Ρ‹ ΠΈ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ Π»ΠΈΠ½ΠΈΠΈ, Тирная ΠΊΠΎΠΆΠ°, Π·Π°ΠΊΡƒΠΏΠΎΡ€Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΡ€Ρ‹

Π˜Π½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚Ρ‹

ΠžΡ‡ΠΈΡ‰Π°ΡŽΡ‰Π΅Π΅ срСдство для Π»ΠΈΡ†Π°: Масло апСльсиновой ΠΊΠΎΡ€ΠΊΠΈ, сок Π»ΠΈΡΡ‚ΡŒΠ΅Π² алоэ Π²Π΅Ρ€Π°, Π²ΠΎΠ΄Π°, экстракт Ρ†Π²Π΅Ρ‚ΠΎΠ² Ρ€ΠΎΠΌΠ°ΡˆΠΊΠΈ, экстракт сока Π»ΠΈΡΡ‚ΡŒΠ΅Π² ΠΎΠ»ΠΈΠ²Ρ‹, масло ши, ΠΊΠΎΠΊΠΎΠΈΠ» ΠΈΠ·Π΅Ρ‚ΠΈΠΎΠ½Π°Ρ‚ натрия, ΠΌΠ΅Ρ‚ΠΈΠ»ΠΎΠ»Π΅ΠΈΠ»Ρ‚Π°ΡƒΡ€Π°Ρ‚ натрия, Π»Π°ΡƒΡ€ΠΈΠ»Π±Π΅Ρ‚Π°ΠΈΠ½, гуаргидроксипропилтримония Ρ…Π»ΠΎΡ€ΠΈΠ΄, Π³Π»ΡŽΠΊΠΎΠ½ΠΎΠ»Π°ΠΊΡ‚ΠΎΠ½, Π±Π΅Π½Π·ΠΎΠ°Ρ‚ натрия

Π Π΅Ρ‚ΠΈΠ½ΠΎΠ»ΠΎΠ²Ρ‹ΠΉ ΠΊΡ€Π΅ΠΌ: Π Π΅Ρ‚ΠΈΠ½ΠΎΠ», Π²ΠΎΠ΄Π°, алоэ Π²Π΅Ρ€Π°, Π³ΠΈΠ°Π»ΡƒΡ€ΠΎΠ½Π°Ρ‚ натрия, подсолнСчноС масло, экстракт Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ чая, масло ши, Ρ‚ΠΎΠΊΠΎΡ„Π΅Ρ€ΠΎΠ», африканскоС пальмовоС масло, ΠΏΠ΅Π½Ρ‚ΠΈΠ»Π΅Π½Π³Π»ΠΈΠΊΠΎΠ»ΡŒ, масло ΠΆΠΎΠΆΠΎΠ±Π°, ΠΏΠ°Π½Ρ‚Π΅Π½ΠΎΠ», фосфолипиды, прополис, полисорбат 20, фосфат калия, глицСрилстСарат, фСноксиэтанол. , ЭтилгСксилглицСрин, ксантановая камСдь, Ρ†Π΅Ρ‚ΠΈΠ»ΠΎΠ²Ρ‹ΠΉ спирт, стСариновая кислота, Π³Π»ΠΈΡ†Π΅Ρ€ΠΈΠ½

Π‘Ρ‹Π²ΠΎΡ€ΠΎΡ‚ΠΊΠ° с Π³ΠΈΠ°Π»ΡƒΡ€ΠΎΠ½ΠΎΠ²ΠΎΠΉ кислотой: Гиалуроновая кислота, Π²ΠΈΡ‚Π°ΠΌΠΈΠ½ Π‘, Π²ΠΈΡ‚Π°ΠΌΠΈΠ½ Π•, дСионизированная Π²ΠΎΠ΄Π°, гамамСлис, алоэ Π²Π΅Ρ€Π°, ΠΊΠΎΡˆΠ΅Ρ€Π½Ρ‹ΠΉ Ρ€Π°ΡΡ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π³Π»ΠΈΡ†Π΅Ρ€ΠΈΠ½, масло ΠΆΠΎΠΆΠΎΠ±Π°, Π·Π΅Π»Π΅Π½Ρ‹ΠΉ Ρ‡Π°ΠΉ Π΄ΠΈΠΊΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹, этилгСксилглицСрин, Ρ€Π΅Ρ‚ΠΈΠ½ΠΎΠ», эфирноС масло Π³Π΅Ρ€Π°Π½ΠΈ, Ρ†Π΅Π»Π»ΡŽΠ»ΠΎΠ·Π°

ΠŸΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° 101

1. ΠŸΡ€ΠΎΠΌΡ‹Ρ‚ΡŒ + Π²Ρ‹ΡΡƒΡˆΠΈΡ‚ΡŒ: ΠΏΡ€ΠΎΠΌΡ‹Ρ‚ΡŒ пустыС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ остатки ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, ΠΈ Π΄Π°Ρ‚ΡŒ ΠΈΠΌ Π²Ρ‹ΡΠΎΡ…Π½ΡƒΡ‚ΡŒ

2. Π£Π΄Π°Π»ΠΈΡ‚Π΅ этикСтки:  Π²ΡΠ΅ наши Π±Π°Π½ΠΊΠΈ, Π±ΡƒΡ‚Ρ‹Π»ΠΊΠΈ, Ρ‚ΡŽΠ±ΠΈΠΊΠΈ ΠΈ внСшняя ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ с вашим ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ содСрТимым. НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π·Π°Ρ€Π°Π½Π΅Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π±ΡƒΠΌΠ°Π³Ρƒ ΠΈ этикСтки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ процСсс ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΡƒΡ‚ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π³Π΄Π΅ Π²Ρ‹ ΠΆΠΈΠ²Π΅Ρ‚Π΅, поэтому Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΎΡΠ²Π΅ΠΆΠΈΡ‚ΡŒ Π² памяти мСстныС ΠΏΡ€Π°Π²ΠΈΠ»Π°!

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим ΠΏΠΎΠ±Π»ΠΈΠΆΠ΅

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ объСдинили эти ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ вмСстС

ΠΎΡ‡ΠΈΡ‰Π°ΡŽΡ‰Π΅Π΅ срСдство для Π»ΠΈΡ†Π°

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ шаг Π² вашСм простом ΡƒΡ…ΠΎΠ΄Π΅ Π·Π° ΠΊΠΎΠΆΠ΅ΠΉ.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *