Π Π°Π·Π½ΠΎΠ΅

Python 3 мноТСства: ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π° (set ΠΈ frozenset) | Python 3 для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… ΠΈ Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

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

пСрСсСчСниС ΠΈ сортировка β€” ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ мноТСствами

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎΠΌ Π² языкС программирования Python называСтся нСупорядочСнная ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π’ качСствС элСмСнтов этого Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ нСизмСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ числа, символы, строки. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ массивов ΠΈ списков, порядок слСдования Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π΅ учитываСтся ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΅Π³ΠΎ содСрТимого. Над ΠΎΠ΄Π½ΠΈΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ нСсколькими мноТСствами ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ряд ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, благодаря функциям стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ языка программирования Python.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с мноТСством, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для Π½Π°Ρ‡Π°Π»Π° Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ, просто присвоив ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π²Ρ‹Π΄Π΅Π»ΠΈΠ² ΠΈΡ… Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹ΠΌΠΈ скобками. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ создаСтся мноТСство Ρ†Π΅Π»Ρ‹Ρ… чисСл ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ a, послС функция print Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° экран Π΅Π³ΠΎ содСрТимоС.

a = {1, 2, 0, 1, 3, 2}
print(a)

{0, 1, 2, 3}

Как ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, всС элСмСнты ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ. БущСствуСт ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ способ создания мноТСств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ использованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° set. АргумСнтом этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π½Π΅ΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ строка с тСкстом, ΠΊΠ°ΠΊ это ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

a = set('data')
print(a)

{'d', 'a', 't'}

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния этого ΠΊΠΎΠ΄Π°, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° заполняСт Π½ΠΎΠ²ΠΎΠ΅ мноТСство ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами ΠΈΠ· Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ строки. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Π½Π°Π±ΠΎΡ€Π° Ρ‚Π°ΠΊΠΆΠ΅ выводится Π½Π° экран.

ИспользованиС

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:

  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Π΅ΡΡ‚ΡŒ Π»ΠΈ Π΄Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² мноТСствС. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ in.
    a = {0, 1, 2, 3}
    print(2 in a)
    
    True
  • Наоборот, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° отсутствия. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ not in.
    a = {0, 1, 2, 3}
    print(2 not in a)
    
    False
  • ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ всСх элСмСнтов.
    for a in {0, 1, 2}:
        print(a)
    
    0
    1
    2

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

Для создания мноТСства ΠΌΠΎΠΆΠ½ΠΎ Π² Python Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ списки, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½Π°Π±ΠΎΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π½Π΅ΠΊΠΈΡ… условий. Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ проводится Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ списков, рассмотрСнной Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ дСмонстрируСт Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ мноТСства a с Ρ†ΠΈΠΊΠ»ΠΎΠΌ for для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… чисСл.

a = {i for i in [1, 2, 0, 1, 3, 2]}
print(a)

{0, 1, 2, 3}

Как ΠΈ ΠΏΡ€Π΅ΠΆΠ΄Π΅, ΠΌΠ΅Ρ‚ΠΎΠ΄ print ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ содСрТимоС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π³Π΄Π΅ Π½Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ числа автоматичСски ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ.

ИзмСнСниС мноТСств

Для управлСния содСрТимым мноТСств Π² языкС Python ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π΄Π°ΡŽΡ‰ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°

Π£Π·Π½Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ количСство элСмСнтов, входящих Π² состав мноТСства, ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ len, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…. Ѐункция print Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

a = {0, 1, 2, 3}
print(len(a))

4

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта

Π§Ρ‚ΠΎΠ±Ρ‹ внСсти Π½ΠΎΠ²Ρ‹Π΅ значСния, потрСбуСтся Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ add. АргумСнтом Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ добавляСмый элСмСнт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π° Π½Π° Python Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² мноТСство элСмСнт со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 4.

a = {0, 1, 2, 3}
a.add(4)
print(a)

{0, 1, 2, 3, 4}

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта

Для удалСния элСмСнтов ΠΈΠ· мноТСства ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python (ΠΊΡ€ΠΎΠΌΠ΅ очистки, которая Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСна Π½ΠΈΠΆΠ΅):

  • remove β€” ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта с Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² случаС, Ссли Ρ‚Π°ΠΊΠΎΠ³ΠΎ элСмСнта Π½Π΅Ρ‚;
  • discard β€” ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта Π±Π΅Π· Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Ссли элСмСнт отсутствуСт;
  • pop β€” ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта, гСнСрируСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ удалСния ΠΈΠ· пустого мноТСства.

Π˜Π·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Π»ΠΈΡˆΠ½ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ remove. Π’ качСствС Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° здСсь выступаСт элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ (Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΡƒΠ΄Π°Π»ΠΈΠΌ число со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 3).

a = {0, 1, 2, 3}
a.remove(3)
print(a)

{0, 1, 2}

По ΠΏΠΎΠ²ΠΎΠ΄Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ pop Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ мноТСства Π½Π΅ упорядочСны, Ρ‚ΠΎ удалится случайный элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² памяти ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ. Но Ссли ΠΎΠ½ΠΈ Π² памяти хранятся Π² отсортированном Π²ΠΈΠ΄Π΅, Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ„Π°ΠΊΡ‚, Ρ‚ΠΎ скорСС всСго Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ элСмСнт с наимСньшим Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Но Π½Π° это Π½Π΅ стоит Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ.

Полная очистка

Иногда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ всС элСмСнты. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ clear, Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Если вывСсти содСрТимоС послС этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π° экранС появится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅.

a = {0, 1, 2, 3}
a.clear()
print(a)

set()

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ пустоС мноТСство.

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ слСдования элСмСнтов Π½Π΅ учитываСтся. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅Ρ‚ смысла Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ сортировкС мноТСств Π² Python 3.

Но с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны всС Π΄Π΅Π»ΠΎ обстоит Π½Π΅ со всСм Ρ‚Π°ΠΊ. Для быстрого поиска элСмСнта, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡ… Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² памяти Π² упорядочСнном Π²ΠΈΠ΄Π΅.

Π’ Π½Π°Ρ‡Π°Π»Π΅ рассмотрим, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ с элСмСнтами Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΌ мноТСствС. Π’Π°ΠΊΠΈΠ΅ элСмСнты Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Если ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ элСмСнты с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ print, Ρ‚ΠΎ ΠΎΠ½ΠΈ выводятся ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

a = {0, 1, 12, 'b', 'ab', 3, 2, 'a'}
print(a)

{0, 1, 'b', 3, 2, 12, 'ab', 'a'}

Как Π²ΠΈΠ΄ΠΈΠΌ, Ρƒ нас Π²Ρ‹Π²Π΅Π»ΠΈΡΡŒ Π½Π΅ отсортированныС значСния, Ссли ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ запуск, Ρ‚ΠΎ порядок Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. Но это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°Π½Ρ‹ элСмСнты Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли попытаСмся вывСсти Ρ‚ΠΎΠ»ΡŒΠΊΠΎ числа:

a = {0, 1, 12, 3, 2}
print(a)

{0, 1, 2, 3, 12}

ВсС элСмСнты Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ упорядочСнно. Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ссли ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² список:

a = {0, 1, 12, 3, 2}
b = list(a)
print(b)

[0, 1, 2, 3, 12]

Аналогично, Π² список значСния записались отсортированными ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ элСмСнты хранятся Π² памяти Π² упорядочСнном Π²ΠΈΠ΄Π΅, Ссли ΠΎΠ½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Но Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ стоит Π½Π° это Ρ€Π°ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Python ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ.

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ отсортированный список ΠΈΠ· мноТСства, Π»ΡƒΡ‡ΡˆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для вСрности Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ sort. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎ отсортированы. Π’Π°Ρˆ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ понятСн для Π΄Ρ€ΡƒΠ³ΠΈΡ….

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

Помимо Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… манипуляций с элСмСнтами мноТСств, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΅Ρ‰Π΅ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Π½ΠΈΠΌΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ строчкой ΠΊΠΎΠ΄Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ слоТныС прСобразования.

Рассмотрим ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с мноТСствами доступныС Π² Python 3.

ОбъСдинСниС

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ всС элСмСнты Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… мноТСств, стоит Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ union Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π³Π΄Π΅ создаСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ чисСл ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ c.

a = {0, 1, 2, 3}
b = {4, 3, 2, 1}
c = a.union(b)
print(c)

{0, 1, 2, 3, 4}

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ всС элСмСнты ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ мноТСства ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ update Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ пСрСнСсти ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° чисСл Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΊΠ°ΠΊ это ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

a = {0, 1, 2, 3}
b = {4, 3, 2, 1}
a.update(b)
print(a)

{0, 1, 2, 3, 4}

ΠŸΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠ΅

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΎΠ±Ρ‰ΠΈΠ΅ элСмСнты для Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… мноТСств, слСдуСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ intersection, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΡƒΡŽ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°Π±ΠΎΡ€ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Код, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅, создаСт Π½ΠΎΠ²ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ чисСл ΠΈΠ· пСрСсСчСния Π΄Π²ΡƒΡ… мноТСств Π² Python 3.

a = {0, 1, 2, 3}
b = {4, 3, 2, 1}
c = a.intersection(b)
print(c)

{1, 2, 3}

Π Π°Π·Π½ΠΎΡΡ‚ΡŒ

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ для Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… мноТСств, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ difference. Ѐункция позволяСт Π½Π°ΠΉΡ‚ΠΈ элСмСнты, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ для Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² Π½Π΅ΠΌ Π½Π΅Ρ‚. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ дСмонстрируСт эту ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ.

a = {0, 1, 2, 3}
b = {4, 3, 2, 1}
c = a.difference(b)
print(c)

{0}

ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ мноТСствами

Для опрСдСлСния подмноТСств ΠΈ надмноТСств ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ True ΠΈΠ»ΠΈ False Π² зависимости ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° выполнСния.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ подмноТСства

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ мноТСство a подмноТСствомb, стоит ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ вывСсти Π½Π° экран Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° issubset, ΠΊΠ°ΠΊ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ всС элСмСнты Π½Π°Π±ΠΎΡ€Π° чисСл a ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² b, функция Π²Π΅Ρ€Π½Π΅Ρ‚ False.

a = {0, 1, 2, 3, 4}
b = {3, 2, 1}
print(a.issubset(b))

False

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ надмноТСства

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, являСтся Π»ΠΈ мноТСство a надмноТСством b, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ issuperset ΠΈ вывСсти Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° экран. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС элСмСнты Π½Π°Π±ΠΎΡ€Π° чисСл b ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² a, функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True.

a = {0, 1, 2, 3, 4}
b = {3, 2, 1}
print(a.issuperset(b))

True

Π’ΠΈΠΏ frozenset

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ, содСрТимоС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ поддаСтся измСнСнию ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ frozenset. ЗначСния ΠΈΠ· этого Π½Π°Π±ΠΎΡ€Π° нСльзя ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ дСмонстрируСтся созданиС ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ стандартной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

a = frozenset({"hello", "world"})
print(a)

frozenset({'hello', 'world'})

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ содСрТимоС frozenset Π΄ΠΎΠ»ΠΆΠ½ΠΎ всСгда ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ статичным, ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ‚Π°ΠΊΠΎΠ΅ мноТСство ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈΠΌΠ΅Π΅Ρ‚ ограничСния.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ мноТСств

Иногда Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ прСдставлСния ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² качСствС совсСм Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…. ВозмоТности языка ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ любоС мноТСство Π² строку, ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ ΠΈΠ»ΠΈ список ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ стандартных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π‘Ρ‚Ρ€ΠΎΠΊΠ°

Для прСобразования мноТСства Π² строку ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конкатСнация тСкстовых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ обСспСчиваСт функция join. Π’ этом случаС Π΅Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ являСтся Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк. Запятая Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… выступаСт Π² качСствС символа, Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‰Π΅Π³ΠΎ значСния. ΠœΠ΅Ρ‚ΠΎΠ΄ type Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

a = {'set', 'str', 'dict', 'list'}
b = ','.join(a)
print(b)
print(type(b))

set,dict,list,str
<class 'str'>

Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· мноТСства ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, слСдуСт ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ dict Π½Π°Π±ΠΎΡ€ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ°Ρ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΊΠ»ΡŽΡ‡. ΠœΠ΅Ρ‚ΠΎΠ΄ print дСмонстрируСт Π½Π° экранС содСрТимоС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° type ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π΅Π³ΠΎ Ρ‚ΠΈΠΏ.

a = {('a', 2), ('b', 4)}
b = dict(a)
print(b)
print(type(b))

{'b': 4, 'a': 2}
<class 'dict'>

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт для Ρ‚Π°ΠΊΠΎΠ³ΠΎ прСобразования – ΠΊΠΎΡ€Ρ‚Π΅ΠΆ состоящий ΠΈΠ· Π΄Π²ΡƒΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

  1. ΠΊΠ»ΡŽΡ‡ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ словаря;
  2. Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΊΠ»ΡŽΡ‡Ρƒ.

Бписок

По Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ прСобразованиями ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Π½Π΅ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². На этот Ρ€Π°Π· ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ list, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° мноТСство a. На Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ print ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния для ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° чисСл.

a = {1, 2, 0, 1, 3, 2}
b = list(a)
print(b)
print(type(b))

[0, 1, 2, 3]
<class 'list'>

РСзюмС

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΊΡ€Π°Ρ‚ΠΊΡƒΡŽ сводку ΠΏΠΎ всСм ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π½Ρ‹ΠΌ функциям, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΡ… названия ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

НазваниСНазначСниС
lenΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°
addΠ”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта
removeΠ£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта
clearΠžΡ‡ΠΈΡΡ‚ΠΊΠ°
unionОбъСдинСниС
updateΠ”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ всСх элСмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ мноТСства Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅
intersectionНахоТдСниС мноТСства, элСмСнты ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ находятся Π½Π° пСрСсСчСнии Π΄Π²ΡƒΡ… мноТСств
differenceНахоТдСниС мноТСства, элСмСнты ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ входят Π² ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Π½ΠΎ Π½Π΅ входят Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ мноТСство
issubsetΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, являСтся Π»ΠΈ мноТСство подмноТСством
issupersetΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, являСтся Π»ΠΈ мноТСство надмноТСством

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π±Ρ‹Π»ΠΈ рассмотрСны Π±Π°Π·ΠΎΠ²Ρ‹Π΅ возмоТности мноТСств стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ языка программирования Python. ИспользованиС этой совокупности ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, позволяСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π²ΠΈΠ΄Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, производя объСдинСниС, пСрСсСчСниС ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… элСмСнтов. Благодаря стандартным функциям ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с мноТСствами, программист ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ строка, список ΠΈ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

res = setA.intersection(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. Или ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ
Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ

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

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

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

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

опСрация

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

{1, 2}

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

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

{5, 6, 7}

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

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

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

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

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ
опСрация симмСтричная Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π΄Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅ мноТСство:

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

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

{1, 2, 5, 6, 7}

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

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

На равСнство

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

setA <= setB
setA >= setB

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

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





Python 3: мноТСства — set

На этом занятии ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Π½ΠΎΠ²ΠΎΠΌ Ρ‚ΠΈΠΏΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Python – мноТСствС (set). По
ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ:

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ (set) – это
нСупорядочСнная коллСкция ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов.

Π’ΠΎ Π΅ΡΡ‚ΡŒ
коллСкция, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ значСния. Для создания
мноТСства ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

{Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅1,
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅2, …, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅N}

НапримСр:

Π’Ρ‹Π²Π΅Π΄Π΅ΠΌ Π²
консоль эту ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΈ Π΅Π΅ Ρ‚ΠΈΠΏ:

Π£Π²ΠΈΠ΄ΠΈΠΌ:

{1, 2, 3, ‘hello’} <class ‘set’>

Π­Ρ‚ΠΎ объявлСниС
ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ. Волько Π² словарС ΠΌΡ‹ ΠΏΠΎΠΌΠΈΠΌΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΅Ρ‰Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ
ΠΊΠ»ΡŽΡ‡ΠΈ. Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π½Π΅Ρ‚ – Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, Ссли ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ
Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ значСния:

a={1,2,3,"hello", 2,3, "hello"}

Ρ‚ΠΎ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚
ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹:

{1, 2, 3, ‘hello’}

И это ΠΊΠ»ΡŽΡ‡Π΅Π²Π°Ρ
ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этой ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ: ΠΎΠ½Π° автоматичСски отбрасываСт всС Π΄ΡƒΠ±Π»ΠΈ.

Π’ качСствС
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ мноТСства ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой нСизмСняСмый Ρ‚ΠΈΠΏ: числа, строки,
ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ. НапримСр:

a={1,1,"hi","hi",("a","b"), ("a","b")}

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

{‘hi’, 1, (‘a’, ‘b’)}

Π’Π°ΠΊΠΆΠ΅ мноТСства
ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ set:

ΠΈΠ»ΠΈ, ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²
качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° любой ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚:

b=set("hello world!")
b=set([1,1,2,3,5,3,2,1])

ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ range:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅
Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ссли ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ пустоС мноТСство Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½Π΅
пустоС мноТСство, Π° пустой ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ! ΠŸΡƒΡΡ‚ΠΎΠ΅ мноТСство создаСтся ΠΈΠΌΠ΅Π½Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ set:

Как моТно
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ мноТСства Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…? НапримСр, Ссли Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ· списка ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ
всС Π΄ΡƒΠ±Π»ΠΈ:

ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ
сначала ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² мноТСство ΠΈΠ· ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

Π°, Π·Π°Ρ‚Π΅ΠΌ,
ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² список, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ list:

Π’ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ эту
ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ просто Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Python. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, Π΄Π²Π΅
послСдниС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½Ρƒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹
мноТСства ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ†ΠΈΠΊΠ»Π° for:

setA = {7,6,5,4,3}
for x in setA:
Β Β Β print(x)

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅,
всС значСния мноТСства Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ Π² консоль. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ
ΠΈΠΌΠ΅Π½Π½ΠΎ значСния мноТСств, индСксов Ρƒ этих элСмСнтов Π½Π΅Ρ‚, Ρ‚.ΠΊ. мноТСство – это
нСупорядочСнная коллСкция. И Π²ΠΎΡ‚ такая опСрация

ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ
ошибкС.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ добавлСния/удалСния элСмСнтов Π² мноТСствС

Для добавлСния
элСмСнта Π² мноТСство ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ add:

И, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ
мноТСства – это измСняСмый Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ сразу Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ этот
элСмСнт, Ссли Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π΅Ρ‰Π΅ Π½Π΅Ρ‚. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ссли ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ 7 Π΅Ρ‰Π΅ Ρ€Π°Π·:

Ρ‚ΠΎ мноТСство Π½Π΅
измСнится.

Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ
Π² мноТСство Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ сразу нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚ΠΎ для этого ΠΌΠΎΠΆΠ½ΠΎ
Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ update:

b.update(["a", "b", (1,2)])

Π’ качСствС
Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, список, значСния
ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² мноТСство, разумССтся, с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ ΠΈΡ…
ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Или, Ρ‚Π°ΠΊ:

Π‘Ρ‚Ρ€ΠΎΠΊΠ° – это
Ρ‚ΠΎΠΆΠ΅ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈ Π΅Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ символы Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² мноТСство. И
Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° update ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ
любой ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Для удалСния
элСмСнта ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ discard:

Если Π΅Ρ‰Π΅ Ρ€Π°Π·
ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π²ΠΎΠΉΠΊΡƒ:

Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅
ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΈ мноТСство Π½Π΅ измСнится.

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ для
удалСния элСмСнта ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ – remove:

Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ
Ρ‚Π°ΠΊΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅:

Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚
ошибка, Ρ‚.ΠΊ. Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 4 Π² мноТСствС ΡƒΠΆΠ΅ Π½Π΅Ρ‚. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ удалСния Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ значСния. Π­Ρ‚ΠΎ СдинствСнноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅
Π² Ρ€Π°Π±ΠΎΡ‚Π΅ этих Π΄Π²ΡƒΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Π’Π°ΠΊΠΆΠ΅ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ
элСмСнты ΠΌΠΎΠΆΠ½ΠΎ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° pop:

ΠŸΡ€ΠΈ этом ΠΎΠ½
Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ удаляСмоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° сам удаляСмый элСмСнт оказываСтся, Π² ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ,
случайным, Ρ‚.ΠΊ. мноТСство – это нСупорядочСнный список. Если Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄
для пустого мноТСства, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка:

НаконСц, Ссли
Π½ΡƒΠΆΠ½ΠΎ просто ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС элСмСнты ΠΈΠ· мноТСства, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄:

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ занятии ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ мноТСства ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± опСрациях Π½Π°Π΄ Π½ΠΈΡ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ возмоТности ΠΈΡ… сравнСния.

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π° Python | Python

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ β€” это нСупорядочСнный Π½Π°Π±ΠΎΡ€ элСмСнтов.Β ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½ (Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ²) ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ (Π΅Π³ΠΎ нСльзя ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ). Но само мноТСство ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ: Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ элСмСнты ΠΈΠ· Π½Π΅Π³ΠΎ.

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ создаСтся Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ set(). ΠŸΡ€ΠΈ этом элСмСнты ΡΠΊΡ€Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹ΠΌΠΈ скобками ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ запятыми.

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ любоС количСство элСмСнтов. Они ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². Но мноТСство Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ измСняСмый элСмСнт, Ρ‚Π°ΠΊΠΎΠΉ как список ΠΈΠ»ΠΈΒ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ.

# мноТСство Ρ†Π΅Π»Ρ‹Ρ… чисСл
my_set = {1, 2, 3}
print(my_set)

# мноТСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²
my_set = {1.0, "Hello", (1, 2, 3)}
print(my_set)

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

# мноТСство Π½Π΅ содСрТит Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ²
# Π’Ρ‹Π²ΠΎΠ΄: {1, 2, 3, 4}
my_set = {1,2,3,4,3,2}
print(my_set)

# мноТСство Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ измСняСмых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
# здСсь [3, 4] - это измСняСмый список
# Если Π²Ρ‹ раскоммСнтируСтС строку #12,
# это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС.
# TypeError: unhashable type: 'list'

#my_set = {1, 2, [3, 4]}

# ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ мноТСство ΠΈΠ· этого списка
# Π’Ρ‹Π²ΠΎΠ΄: {1, 2, 3}
my_set = set([1,2,3,2])
print(my_set)

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ пустоС мноТСство слоТнСС. ΠŸΡƒΡΡ‚Ρ‹Π΅ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки {} создадут пустой ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Python.Β Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ мноТСство Π±Π΅Π· элСмСнтов, Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ set() Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

# ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ a с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ {}
a = {}

# провСряСм Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… a
# Π’Ρ‹Π²ΠΎΠ΄: <class 'dict'>
print(type(a))

# ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ a с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ set()
a = set()

# провСряСм Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… a
# Π’Ρ‹Π²ΠΎΠ΄: <class 'set'>
print(type(a))

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹. Но элСмСнты Π² Π½ΠΈΡ… нСупорядочСнныС, поэтому индСксированиС Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла.

НСльзя ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ элСмСнт мноТСства, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ для этого ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ срСз.Β ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ ΠΈΡ… Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚.

МоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ элСмСнт, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡΒ ΠΌΠ΅Ρ‚ΠΎΠ΄ add(), нСсколько β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡΒ ΠΌΠ΅Ρ‚ΠΎΠ΄ update(). Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒΒ Π²Β ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ, списки, строки или Π΄Ρ€ΡƒΠ³ΠΈΠ΅ мноТСства.Β Π’ΠΎ всСх случаях Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹.

# ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ my_set
my_set = {1,3}
print(my_set)

# Ссли Π²Ρ‹ раскоммСнтируСтС строку 9,
# Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ
# TypeError: 'set' object does not support indexing

#my_set[0]

# Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта
# Π’Ρ‹Π²ΠΎΠ΄: {1, 2, 3}
my_set.add(2)
print(my_set)

# Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов
# Π’Ρ‹Π²ΠΎΠ΄: {1, 2, 3, 4}
my_set.update([2,3,4])
print(my_set)

# Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ списка ΠΈ мноТСства
# Π’Ρ‹Π²ΠΎΠ΄: {1, 2, 3, 4, 5, 6, 8}
my_set.update([4,5], {1,6,8})
print(my_set)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

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

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²Β discard() ΠΈΒ remove(). Π Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ использовании discard(), Ссли элСмСнт Π½Π΅ сущСствуСт Π²ΠΎ мноТСствС, ΠΎΠ½ΠΎ остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ. А ΠΌΠ΅Ρ‚ΠΎΠ΄Β remove() выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ это.

# ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ my_set
my_set = {1, 3, 4, 5, 6}
print(my_set)

# удаляСм элСмСнт
# Π’Ρ‹Π²ΠΎΠ΄: {1, 3, 5, 6}
my_set.discard(4)
print(my_set)

# удаляСм элСмСнт
# Π’Ρ‹Π²ΠΎΠ΄: {1, 3, 5}
my_set.remove(6)
print(my_set)

# удаляСм элСмСнт,
# ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отсутствуСт Π² my_set
# Π’Ρ‹Π²ΠΎΠ΄: {1, 3, 5}
my_set.discard(2)
print(my_set)

# удаляСм элСмСнт,
# ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отсутствуСт Π² my_set
# Если Π²Ρ‹ раскоммСнтируСтС строку 27,
# Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ.
# Π’Ρ‹Π²ΠΎΠ΄: KeyError: 2

#my_set.remove(2) 

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ элСмСнт, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡΒ ΠΌΠ΅Ρ‚ΠΎΠ΄ pop(). Но Π½Π΅Ρ‚ способа ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ элСмСнт Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½.

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС элСмСнты ΠΈΠ· мноТСства, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Β clear().

# ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ my_set
# Π’Ρ‹Π²ΠΎΠ΄: мноТСство ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов
my_set = set("HelloWorld")
print(my_set)

# ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ элСмСнт
# Π’Ρ‹Π²ΠΎΠ΄: случайный элСмСнт
print(my_set.pop())

# ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ элСмСнт
# Π’Ρ‹Π²ΠΎΠ΄: случайный элСмСнт
my_set.pop()
print(my_set)

# ΠΎΡ‡ΠΈΡ‰Π°Π΅ΠΌ my_set
#Π’Ρ‹Π²ΠΎΠ΄: set()
my_set.clear()
print(my_set)

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для выполнСния матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ: объСдинСниС, пСрСсСчСниС ΠΈ симмСтричная Ρ€Π°Π·Π½ΠΈΡ†Π°.

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° мноТСства:

>>> A = {1, 2, 3, 4, 5}
>>> B = {4, 5, 6, 7, 8}

ОбъСдинСниС AΒ ΠΈΒ BΒ β€” это мноТСство всСх элСмСнтов ΠΈΠ· ΠΎΠ±ΠΎΠΈΡ… мноТСств.

ОбъСдинСниС  осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽΒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° |.Β Π­Ρ‚Ρƒ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Β union().

# ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ A ΠΈ B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ |
# Π’Ρ‹Π²ΠΎΠ΄: {1, 2, 3, 4, 5, 6, 7, 8}
print(A | B)

ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ union
>>> A.union(B)
{1, 2, 3, 4, 5, 6, 7, 8}

# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ union для B
>>> B.union(A)
{1, 2, 3, 4, 5, 6, 7, 8}

ΠŸΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠ΅Β AΒ ΠΈΒ B – опСрация получСния Π½Π°Π±ΠΎΡ€Π° элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‰ΠΈΠΌΠΈ для ΠΎΠ±ΠΎΠΈΡ… мноТСств.

ΠŸΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠ΅ осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽΒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° &.Β Π­Ρ‚Ρƒ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ произвСсти с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Β intersection().

# ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ A ΠΈ B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ &
# Π’Ρ‹Π²ΠΎΠ΄: {4, 5}
print(A & B) 

ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ intersection для A
>>> A.intersection(B)
{4, 5}

# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ intersection для B
>>> B.intersection(A)
{4, 5}

Π Π°Π·Π½ΠΈΡ†Π°Β AΒ ΠΈΒ BΒ (A β€” B) – опСрация получСния мноТСства элСмСнтов,Β ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Β A, Π½ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚Β B.Β Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΒ ΠΆΠ΅,Β  B β€” A прСдставляСт собой мноТСство элСмСнтов ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ…Β BΒ , Π½ΠΎ Π½Π΅ принадлСТащих А.

Π Π°Π·Π½ΠΈΡ†Π° опрСдСляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽΒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° -.Β ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Β difference().

# ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ A ΠΈ B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ - для A
# Π’Ρ‹Π²ΠΎΠ΄: {1, 2, 3}
print(A - B)

ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ difference для A
>>> A.difference(B)
{1, 2, 3}

# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ - для B
>>> B - A
{8, 6, 7}

# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ difference для B
>>> B.difference(A)
{8, 6, 7}

БиммСтричная Ρ€Π°Π·Π½ΠΈΡ†Π° AΒ ΠΈΒ BΒ β€” это мноТСство элСмСнтов Π²Β AΒ ΠΈΒ B,Β Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‰ΠΈΠΌΠΈ для ΠΎΠ±ΠΎΠΈΡ… мноТСств. Она опрСдСляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽΒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ^ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Β symmetric_difference().

# ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ A ΠΈ B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ^
# Π’Ρ‹Π²ΠΎΠ΄: {1, 2, 3, 6, 7, 8}
print(A ^ B)

ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ symmetric_difference для A
>>> A.symmetric_difference(B)
{1, 2, 3, 6, 7, 8}

# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ symmetric_difference для B
>>> B.symmetric_difference(A)
{1, 2, 3, 6, 7, 8}

Бписок всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ доступны для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ мноТСств.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ мноТСств Python
ΠœΠ΅Ρ‚ΠΎΠ΄ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
add()ДобавляСт элСмСнт Π²ΠΎ мноТСство.
clear()УдаляСт всС элСмСнты ΠΈΠ· мноТСства.
copy()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ копию мноТСства.
difference()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ мноТСств Π² качСствС Π½ΠΎΠ²ΠΎΠ³ΠΎ мноТСства.
difference_update()УдаляСт всС элСмСнты Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ мноТСства ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ мноТСства.
discard()УдаляСт элСмСнт ΠΈΠ· мноТСства, Ссли ΠΎΠ½ содСрТится Π² Π½Π΅ΠΌ.
intersection()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ пСрСсСчСниС Π΄Π²ΡƒΡ… мноТСств Π² качСствС Π½ΠΎΠ²ΠΎΠ³ΠΎ мноТСства.
intersection_update()ΠžΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ‚ мноТСство пСрСсСчСниСм с Π΄Ρ€ΡƒΠ³ΠΈΠΌ мноТСством.
isdisjoint()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True,Β Β  Ссли Π΄Π²Π° мноТСства ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ пСрСсСчСниС.
issubset()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β True,  Ссли Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мноТСство содСрТит это мноТСство.
issuperset()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True,  Ссли это мноТСство содСрТит Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мноТСство.
pop()УдаляСт ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ элСмСнт мноТСство. Π’Ρ‹Π΄Π°Π΅Ρ‚ KeyError,Β  Ссли мноТСство пусто.
remove()УдаляСт элСмСнт ΠΈΠ· Π½Π°Π±ΠΎΡ€Π°. Если элСмСнт Π½Π΅ являСтся Ρ‡Π»Π΅Π½ΠΎΠΌ мноТСства, Π²Ρ‹Π΄Π°Π΅Ρ‚ KeyError.
symmetric_difference()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠΈΠΌΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π½ΡƒΡŽ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π΄Π²ΡƒΡ… мноТСств ΠΊΠ°ΠΊ Π½ΠΎΠ²ΠΎΠ΅ мноТСство.
symmetric_difference_update()ΠžΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ‚ мноТСство симмСтричной Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ мноТСством.
union()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ объСдинСниС мноТСств Π² Π½ΠΎΠ²ΠΎΠΌ Π½Π°Π±ΠΎΡ€Π΅.
update()ΠžΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ‚ мноТСство объСдинСниСм с Π΄Ρ€ΡƒΠ³ΠΈΠΌ мноТСством.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, сущСствуСт Π»ΠΈ элСмСнт Π²ΠΎ мноТСствС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово in.

# ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ my_set
my_set = set("apple")

# провСряСм, присутствуСт Π»ΠΈ 'a'
# Π’Ρ‹Π²ΠΎΠ΄: True
print('a' in my_set)

# провСряСм, присутствуСт Π»ΠΈ 'p' 
# Π’Ρ‹Π²ΠΎΠ΄: False
print('p' not in my_set)

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» for, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ΠΊΡƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π²ΠΎ мноТСствС.

>>> for letter in set("apple"):
...     print(letter)
...    
a
p
e
l

ВстроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ,Β Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊΒ all(),Β any(),Β enumerate(), len(),Β max(),Β min(), sorted(), sum() ,Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ с мноТСством для выполнСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡.

ВстроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с мноТСствами
Π€ΡƒΠ½ΠΊΡ†ΠΈΡΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
all()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True, Ссли всС элСмСнты мноТСства ΡΠ²Π»ΡΡŽΡ‚ΡΡ true (ΠΈΠ»ΠΈ Ссли мноТСство пусто).
any()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True, Ссли ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ элСмСнт мноТСства являСтся true. Если мноТСство пусто, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ False.
enumerate()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.Β Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ индСкс ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ всСх элСмСнтов мноТСства Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ€Ρ‹.
len()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ (количСство элСмСнтов) мноТСства.
max()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ наибольший элСмСнт Π²ΠΎ мноТСствС.
min()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ наимСньший элСмСнт Π²ΠΎ мноТСствС.
sorted()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ отсортированный список, состоящий ΠΈΠ· элСмСнтов мноТСства (Π½Π΅ сортируСт само мноТСство).
sum()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ сумму всСх элСмСнтов мноТСства.

Frozenset β€” это Π½ΠΎΠ²Ρ‹ΠΉ класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ характСристики мноТСства. Но Π΅Π³ΠΎ элСмСнты Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ послС назначСния.Β Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой нСизмСняСмыС списки, Frozensets ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСизмСняСмыми мноТСствами.

Frozenset ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создан с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΒ frozenset(). Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅Β ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹,Β ΠΊΠ°ΠΊΒ copy(),Β difference(), intersection(), isdisjoint(),Β issubset(),Β issuperset(),Β symmetric_difference() ΠΈΒ union(). Но ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ добавлСния ΠΈΠ»ΠΈ удалСния элСмСнтов.

# ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ A ΠΈ B
A = frozenset([1, 2, 3, 4])
B = frozenset([3, 4, 5, 6]) 

ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ эти ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

>>> A.isdisjoint(B)
False
>>> A.difference(B)
frozenset({1, 2})
>>> A | B
frozenset({1, 2, 3, 4, 5, 6})
>>> A.add(3)
...
AttributeError: 'frozenset' object has no attribute 'add'

Данная публикация прСдставляСт собой ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Β«Python SetsΒ» , ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ Π΄Ρ€ΡƒΠΆΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.Ρ€Ρƒ

Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ ΠΊΠ°Π½Π°Π». Подпишись, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ!

Python | ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π°

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π°

ПослСднСС обновлСниС: 21.06.2017

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ (set) ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π²ΠΈΠ΄ Π½Π°Π±ΠΎΡ€Π° элСмСнтов. Для опрСдСлСния мноТСства ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ элСмСнты:


users = {"Tom","Bob","Alice", "Tom"}
print(users)	# {"Tom","Bob","Alice"}

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ функция print Π²Ρ‹Π²Π΅Π»Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· элСмСнт «Tom», хотя Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ мноТСства этот элСмСнт содСрТится Π΄Π²Π° Ρ€Π°Π·Π°.
ВсС ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ мноТСство содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния.

Π’Π°ΠΊΠΆΠ΅ для опрСдСлСния мноТСства ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ функция set(), Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ пСрСдаСтся список ΠΈΠ»ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ элСмСнтов:

users3 = set(["Mike", "Bill", "Ted"])

Π€ΡƒΠ½ΠΊΡ†ΠΈΡŽ set ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ для создания пустого мноТСства:


users = set()

Для получСния Π΄Π»ΠΈΠ½Ρ‹ мноТСства примСняСтся встроСнная функция len():


users = {"Tom","Bob","Alice"}
print(len(users)}	# 3

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнтов

Для добавлСния ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ³ΠΎ элСмСнта вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ add():


users = set()
users.add("Sam")
print(users)

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов

Для удалСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ remove(), Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСдаСтся удаляСмый элСмСнт. Но слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли
Ρ‚Π°ΠΊΠΎΠ³ΠΎ элСмСнта Π½Π΅ окаТСтся Π² мноТСствС, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ сгСнСрирована ошибка. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ элСмСнта с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° in:


users = {"Tom", "Bob", "Alice"}

user = "Tom"
if user in users: 
    users.remove(user)
print(users)	# {"Bob", "Alice"}

Π’Π°ΠΊΠΆΠ΅ для удалСния ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ discard(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΈ отсутствии элСмСнта:


user = "Tim"
users.discard(user)

Для удалСния всСх элСмСнтов вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ clear():


users.clear()

ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ мноТСства

Для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° элСмСнтов ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» for:


users = {"Tom","Bob","Alice"}

for user in users:
    print(user)

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт помСщаСтся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ user.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с мноТСствами

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° copy() ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС ΠΎΠ΄Π½ΠΎΠ³ΠΎ мноТСства Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ:


users = {"Tom","Bob","Alice"}
users3 = users.copy()

ΠœΠ΅Ρ‚ΠΎΠ΄ union() ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Π΄Π²Π° мноТСства ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ мноТСство:


users = {"Tom","Bob","Alice"}
users2 = {"Sam","Kate", "Bob"}

users3 = users.union(users2)
print(users3)   # {"Bob", "Alice", "Sam", "Kate", "Tom"}

ΠŸΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠ΅ мноТСств позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π² ΠΎΠ±ΠΎΠΈΡ… мноТСствах.
ΠœΠ΅Ρ‚ΠΎΠ΄ intersection() ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ пСрСсСчСния мноТСств ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ мноТСство:


users = {"Tom","Bob","Alice"}
users2 = {"Sam","Kate", "Bob"}

users3 = users.intersection(users2)
print(users3)   # {"Bob"}

ВмСсто ΠΌΠ΅Ρ‚ΠΎΠ΄Π° intersection ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ логичСского умноТСния:


users = {"Tom","Bob","Alice"}
users2 = {"Sam","Kate", "Bob"}

print(users & users2)   # {"Bob"}

Π’ этом случаС ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π±Ρ‹ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° опСрация — Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ мноТСств Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ мноТСствС, Π½ΠΎ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ. Для
получСния разности мноТСств ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ difference ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ вычитания:


users = {"Tom","Bob","Alice"}
users2 = {"Sam","Kate", "Bob"}

users3 = users.difference(users2)
print(users3)           # {"Tom", "Alice"}
print(users - users2)   # {"Tom", "Alice"}

ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ мноТСствами

ΠœΠ΅Ρ‚ΠΎΠ΄ issubset позволяСт Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ мноТСство подмноТСством (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒΡŽ) Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ мноТСства:


users = {"Tom", "Bob", "Alice"}
superusers = {"Sam", "Tom", "Bob", "Alice", "Greg"}

print(users.issubset(superusers))   # True
print(superusers.issubset(users))   # False

ΠœΠ΅Ρ‚ΠΎΠ΄ issuperset, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ мноТСство являСтся надмноТСством (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ содСрТит) для Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ мноТСства:


users = {"Tom", "Bob", "Alice"}
superusers = {"Sam", "Tom", "Bob", "Alice", "Greg"}

print(users.issuperset(superusers))   # False
print(superusers.issuperset(users))   # True

frozen set

Π’ΠΈΠΏ frozen set являСтся Π²ΠΈΠ΄ΠΎΠΌ мноТСств, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ. Для Π΅Π³ΠΎ создания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция
frozenset:

users = frozenset({"Tom", "Bob", "Alice"})

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ frozenset пСрСдаСтся Π½Π°Π±ΠΎΡ€ элСмСнтов — список, ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мноТСство.

Π’ Ρ‚Π°ΠΊΠΎΠ΅ мноТСство ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты, ΠΊΠ°ΠΊ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· Π½Π΅Π³ΠΎ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ. БобствСнно поэтому frozen set ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:

  • len(s): Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ мноТСства

  • x in s: Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли элСмСнт x присутствуСт Π² мноТСствС s

  • x not in s: Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли элСмСнт x отсутствуСт Π² мноТСствС s

  • s.issubset(t): Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли t содСрТит мноТСство s

  • s.issuperset(t): Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли t содСрТится Π² мноТСствС s

  • s.union(t)

    : Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ объСдинСниС мноТСств s ΠΈ t

  • s.intersection(t): Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ пСрСсСчСниС мноТСств s ΠΈ t

  • s.difference(t): Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ мноТСств s ΠΈ t

  • s.copy(): Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ копию мноТСства s

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π° Π² Python — tirinox.ru

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ (Π°Π½Π³Π». Β«setΒ«) – нСупорядочСнная коллСкция ΠΈΠ· ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… (Π½Π΅ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ) элСмСнтов. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ мноТСства Π² Python Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ (нСизмСняСмы), хотя само содСрТимоС мноТСства ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ: ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ элСмСнты ΠΈΠ· мноТСства.

О нСизмСняСмых мноТСствах написано Π² ΠΊΠΎΠ½Ρ†Π΅ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ.

CPython: Π²Π½ΡƒΡ‚Ρ€ΠΈ мноТСства Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ»ΡŽΡ‡ΠΈ Π±Π΅Π· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ отсутствиС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° члСнства выполняСтся Π·Π° врСмя O(1), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ поиск элСмСнтов Π² Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ‚ΠΎΠΆΠ΅ выполняСтся Π·Π° О(1). Если интСрСсно, ΠΊΠ°ΠΊ это Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π½Π° Π‘: Π²ΠΎΡ‚ ссылка.

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

Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мноТСство ΠΌΠΎΠΆΠ½ΠΎ нСсколькими способами. Π‘Π°ΠΌΡ‹ΠΉ простой – ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ элСмСнты Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок {}. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ элСмСнты Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Π³Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ нСизмСняСмы. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² мноТСство, Π° список – нСльзя.

>>> my_set = {1, 2, 3, 4}

>>> my_hetero_set = {"abc", 3.14, (10, 20)}  # ΠΌΠΎΠΆΠ½ΠΎ с ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΌ

>>> my_invalid_set = {"abc", 3.14, [10, 20]}  # нСльзя со списком
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

МоТно Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ set, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ мноТСство ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ: списка, ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° ΠΈΠ»ΠΈ словаря. Если это Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ – Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ мноТСство Π±ΡƒΠ΄Π΅Ρ‚ составлСно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅ΠΉ этого словаря. МоТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ мноТСство Π΄Π°ΠΆΠ΅ ΠΈΠ· строки: Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° каТдая Π±ΡƒΠΊΠ²Π° (Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·):

>>> my_set2 = set([11, 22, 33])
>>> my_set2
{33, 11, 22}

>>> my_set3 = set((1, 2, 3))
>>> my_set3
{1, 2, 3}

>>> my_set4 = set({"a": 10, "b": 20})
>>> my_set4
{'b', 'a'}

>>> my_set5 = set("hello")
>>> my_set5
{'h', 'l', 'e', 'o'}

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ пустоС мноТСство? {} – Π²Π΅Ρ€Π½Π΅Ρ‚ Π½Π°ΠΌ пустой словарик, Π° Π½Π΅ мноТСство. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ set() Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

>>> is_it_a_set = {}
>>> type(is_it_a_set)
<class 'dict'>

>>> this_is_a_set = set()
>>> type(this_is_a_set)
<class 'set'>
ИзмСнСниС мноТСств

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ, добавляя ΠΈΠ»ΠΈ удаляя элСмСнты. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π½Π΅ упорядочСны, Ρ‚ΠΎ индСксированиС Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла ΠΈ Π½Π΅ поддСрТиваСтся: ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ элСмСнтам мноТСства ΠΏΠΎ индСксу, ΠΊΠ°ΠΊ ΠΌΡ‹ это Π΄Π΅Π»Π°Π΅ΠΌ для списков ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта выполняСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ add(). ΠΠ΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ – ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ update():

>>> my_set = {44, 55}
>>> my_set.add(50)
>>> my_set
{50, 44, 55}

>>> my_set.update([1, 2, 3])
>>> my_set
{1, 2, 3, 44, 50, 55}

>>> my_set.update([2, 3, 6], {1, 50, 60}) 
>>> my_set
{1, 2, 3, 6, 44, 50, 55, 60}

>>> my_set.update("string")
>>> my_set
{1, 2, 3, 6, 'i', 44, 'r', 50, 's', 55, 'n', 'g', 60, 't'}

ЕстСствСнно, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ элСмСнтов Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов ΠΈΠ· мноТСства

Для удалСния элСмСнта ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ discard() ΠΈ remove(). Π”Π΅Π»Π°ΡŽΡ‚ ΠΎΠ½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎΠΆΠ΅, Π½ΠΎ Ссли удаляСмого элСмСнта Π½Π΅Ρ‚ Π²ΠΎ мноТСствС, Ρ‚ΠΎ discard() оставит мноТСство Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΌΠΎΠ»Ρ‡Π°, Π° remove() – бросит ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:

>>> my_set = {1, 2, 3, 4, 5, 6}
>>> my_set.discard(2)
>>> my_set
{1, 3, 4, 5, 6}

>>> my_set.remove(4)
>>> my_set
{1, 3, 5, 6}

>>> my_set.discard(10)
>>> my_set
{1, 3, 5, 6}

>>> my_set.remove(10)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 10

Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ pop(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Π΅Ρ€Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ (ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ попавшийся) элСмСнт мноТСства, удаляСт Π΅Π³ΠΎ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

>>> my_set = {3, 4, 5, 6, 1, 2}
>>> my_set
{1, 2, 3, 4, 5, 6}
>>> my_set.pop()
1
>>> my_set
{2, 3, 4, 5, 6}

НаконСц, ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ мноТСство (Ρ‚.Π΅. ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС Π΅Π³ΠΎ элСмСнты) ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ clear():

>>> my_set = {1, 2, 3}
>>> my_set.clear()
>>> my_set
set()
ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° члСнства

Π£Π·Π½Π°Ρ‚ΡŒ Π΅ΡΡ‚ΡŒ Π»ΠΈ элСмСнт Π² мноТСствС ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ in (ΠΈΠ»ΠΈ not in, Ссли Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² отсутствии элСмСнта):

>>> s = {"banana", "apple"}
>>> "banana" in s
True
>>> "tomato" not in s
True

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ провСряСтся члСнства ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта, Ссли Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ являСтся Π»ΠΈ ΠΎΠ΄Π½ΠΎ мноТСство подмноТСством Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ in Ρ‚ΡƒΡ‚ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚:

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

Π’ΡƒΡ‚ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ < ΠΈ >. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ True, с Β«ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉΒ» стороны ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡ‚ΠΎΡΡ‚ΡŒ мноТСство, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ содСрТащСС мноТСство, стоящСС ΠΏΠΎ Β«ΡƒΠ·ΠΊΡƒΡŽΒ» сторону Π³Π°Π»ΠΎΡ‡ΠΊΠΈ:

>>> {1, 2} < {1, 2, 3, 4}
True
>>> {5, 6, 7, 8} > {5, 8}
True
>>> {1, 2, 3} < {1, 2, 4}
False
Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΡ мноТСств

ΠŸΡ€ΠΎΠ±Π΅ΠΆΠ°Ρ‚ΡŒΡΡ ΠΏΠΎ элСмСнтам мноТСства Ρ‚Π°ΠΊΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎ элСмСнтам Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ for-in (порядок ΠΎΠ±Ρ…ΠΎΠ΄Π° Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚ΠΎΡ‡Π½ΠΎ):

my_set = {"Moscow", "Paris", "London"}
for elem in my_set:
    print(elem)
Moscow
London
Paris

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

Π‘Π°ΠΌΠΎΠ΅ интСрСсноС – ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ матСматичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ мноТСствами.

Рассмотрим Π΄Π²Π° мноТСства A ΠΈ B:

A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
ОбъСдинСниС

ОбъСдинСниС мноТСств – мноТСство, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ всС элСмСнты ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ мноТСств. Π­Ρ‚ΠΎ коммуникативная опСрация (ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Ρ‹ мСст Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ мСняСтся).

Π’ Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π»ΠΈΠ±ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ union(), Π»ΠΈΠ±ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ Ρ‡Π΅Ρ€Ρ‚Π° Β«|Β»:

>>> A = {1, 2, 3, 4, 5}
>>> B = {4, 5, 6, 7, 8}

>>> A | B
{1, 2, 3, 4, 5, 6, 7, 8}

>>> A.union(B)
{1, 2, 3, 4, 5, 6, 7, 8}

>>> B.union(A)
{1, 2, 3, 4, 5, 6, 7, 8}
ΠŸΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠ΅ мноТСств

ΠŸΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠ΅ мноТСств – мноТСство, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ входят Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±Ρ‰ΠΈΠ΅ элСмСнты, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ ΠΈ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ, ΠΈ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ мноТСствС. Π’Π°ΠΊΠΆΠ΅ коммуникативная опСрация.

ΠŸΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ intersection() ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ампСрсандом Β«&Β»:

>>> A = {1, 2, 3, 4, 5}
>>> B = {4, 5, 6, 7, 8}

>>> A & B
{4, 5}

>>> B & A
{4, 5}

>>> A.intersection(B)
{4, 5}
Π Π°Π·Π½ΠΎΡΡ‚ΡŒ мноТСств

Π Π°Π·Π½ΠΎΡΡ‚ΡŒ мноТСств A ΠΈ Π’ – мноТСство элСмСнтов ΠΈΠ· A, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π² B. НС коммуникативная опСрация!

ВыполняСтся Π·Π½Π°ΠΊΠΎΠΌ минус Β«-Β» ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ difference():

>>> A = {1, 2, 3, 4, 5}
>>> B = {4, 5, 6, 7, 8}

>>> A - B
{1, 2, 3}

>>> B - A
{8, 6, 7}

>>> A.difference(B)
{1, 2, 3}

>>> B.difference(A)
{8, 6, 7}

Как Π²ΠΈΠ΄Π½ΠΎ Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Π°, Π² ΠΊΠ°ΠΊΠΎΠΌ порядкС ΠΈΠ΄ΡƒΡ‚ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹.

БиммСтричная Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ

БиммСтричная Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ – это объСдинСниС мноТСств Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΌ ΠΈΡ… пСрСсСчСния. По Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, это сумма разностСй. Π­Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ symmetric_difference() ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΡ€Ρ‹ΡˆΠΊΠ° Β«^Β»:

>>> A = {1, 2, 3, 4, 5}
>>> B = {4, 5, 6, 7, 8}

>>> A ^ B
{1, 2, 3, 6, 7, 8}

>>> B ^ A
{1, 2, 3, 6, 7, 8}

>>> A.symmetric_difference(B)
{1, 2, 3, 6, 7, 8}

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ опрСдСлСниям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΏΡ€ΠΈΠ²Π΅Π» Π² Π½Π°Ρ‡Π°Π»Π΅ этого Ρ€Π°Π·Π΄Π΅Π»Π°:

>>> A ^ B == (A - B) | (B - A)   # объСдинСниС простых разностСй
True

>>> A ^ B == (A | B) - (A & B)   # Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ объСдинСния ΠΈ пСрСсСчСния
True
ΠŸΡ€ΠΎΡ‡Π΅Π΅

Ко мноТСствам ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ стандартныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ all(), any(), enumerate(), len(), max(), min(), sorted(), sum(). Описания ΠΈΡ… ΠΈΡ‰ΠΈΡ‚Π΅ Ρ‚ΡƒΡ‚.

ΠŸΡ€ΠΎΡ‡ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса set:

copy() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ копию мноТСства
difference_update(other_set)УдаляСт ΠΈΠ· этого мноТСства всС элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Π²ΠΎ мноТСствС, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅
intersection_update(other_set)ΠžΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ‚ это мноТСство элСмСнтами ΠΈΠ· пСрСсСчСния мноТСств
isdisjoint(other_set)Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли мноТСства Π½Π΅ ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‚ΡΡ
issubset(other_set)Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли это мноТСство являСтся подмноТСством Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ
issuperset(other_set)Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли это мноТСство являСтся надмноТСством Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ
symmetric_difference_update(other_set)ДобавляСт Π² это мноТСство ΡΠΈΠΌΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π½ΡƒΡŽ Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ этого ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ мноТСств

Π—Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ мноТСство

Π—Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ мноТСство (frozen set) Ρ‚Π°ΠΊΠΆΠ΅ являСтся встроСнной ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ Π² Python. Обладая характСристиками ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ мноТСства, Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ мноТСство Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ послС создания (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ являСтся нСизмСняСмой вСрсиСй списка).

Π‘ΡƒΠ΄ΡƒΡ‡ΠΈ измСняСмыми, ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ мноТСства ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅Ρ…Π΅ΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ (unhashable type), Π° Π·Π½Π°Ρ‡ΠΈΡ‚ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ примСнятся ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡ΠΈ словаря ΠΈΠ»ΠΈ элСмСнты Π΄Ρ€ΡƒΠ³ΠΈΡ… мноТСств.

Π—Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ мноТСства ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ…ΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ словаря ΠΈ элСмСнтами Π΄Ρ€ΡƒΠ³ΠΈΡ… мноТСств.

Π‘ΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ мноТСства Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ frozenset(), Π³Π΄Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ другая коллСкция. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

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

>>> B = frozenset(['a', 'b', 'cd'])
>>> B
frozenset({'cd', 'b', 'a'})

Над Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ мноТСствами ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ всС Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ содСрТимоС этого мноТСства. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚ΠΎΠΆΠ΅ Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ мноТСства:

>>> A = frozenset('hello')
>>> B = frozenset('world')
>>> A | B
frozenset({'o', 'r', 'd', 'e', 'l', 'h', 'w'})
>>> A & B
frozenset({'o', 'l'})
>>> A ^ B
frozenset({'d', 'e', 'h', 'r', 'w'})

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ мноТСствах Π² Python.

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для ΠΊΠ°Π½Π°Π»Π°Β @pyway.Β ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° ΠΌΠΎΠΉ ΠΊΠ°Π½Π°Π» Π² Π’Π΅Π»Π΅Π³Ρ€Π°ΠΌΒ @pywayΒ πŸ‘ˆΒ 




1Β 560

Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ ΠΈ мноТСства Π² Python ΠΈ асимптотика стандартных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ слоТности Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ рассмотрСно Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ сСмСстрС, Π² основном Π² Ρ€Π°Π±ΠΎΡ‚Π°Ρ…, связанных с сортировками. ЦСль Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ стандартных ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ Π² языкС python Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с думя ΠΌΠΎΡ‰Π½Ρ‹ΠΌΠΈ концСпциями — мноТСство(set) ΠΈ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ(dict).

Π’Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСнна Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ встроСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ классов list, dict, set.

Для Π½Π°Ρ‡Π°Π»Π° вспомним ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со списками.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡΠŸΡ€ΠΈΠΌΠ΅Ρ€Π’Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒΠ—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΡ
ВзятиС индСксаl[i]O(1)Β 
Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ элСмСнтаl[i] = 0O(1)Β 
Π”Π»ΠΈΠ½Π°len(l)O(1)Β 
Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Π΅Ρ†l.append(5)O(1)Β 
Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ с ΠΊΠΎΠ½Ρ†Π°l.pop()O(1)Β 
ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° спискаl.clear()O(1)Аналогично l = []
Π‘Ρ€Π΅Π·(Slice)l[a:b]O(b-a)Β 
Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅l.extend(A)O(len(A))Зависит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ Π΄Π»ΠΈΠ½Ρ‹ A
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅list(A)O(len(A))Зависит ΠΎΡ‚ Π΄Π»ΠΈΠ½Ρ‹ A (ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚)
ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ==, !=l1 == l2O(N)Β 
ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π² срСз[a:b] = …O(N)Β 
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтаdel l[i]O(N)Β 
Поиск элСмСнтаx (not) in lO(N)Поиск Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π·Π° O(N)
ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ спискаl.copy()O(N)Π’ΠΎ ΠΆΠ΅ самоС Ρ‡Ρ‚ΠΎ l[:], ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ O(N)
УдалСниС из спискаl.remove(..)O(N) 
Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ элСмСнтаl.pop(i)O(N)O(N-i): l.pop(0):O(N) (см. Π²Ρ‹ΡˆΠ΅)
ЭкстрСмумыmin(l)/max(l)O(N)Поиск Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π·Π° O(N)
ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅l.reverse()O(N)Β 
Π˜Ρ‚Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅for v in l:O(N)Β 
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°l.sort()O(N Log N)Β 
ΠŸΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅k*lO(k N)5*l Π±ΡƒΠ΄Π΅Ρ‚ Π·Π° O(N), len(l)*l Π±ΡƒΠ΄Π΅Ρ‚ O(N**2)

Π£ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… list Python Π±Ρ‹Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΊΠ°ΠΊΠΈΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²ΠΎ врСмя Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ повлиял Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ быстро список ΠΌΠΎΠ³ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Одно ΠΈΠ· Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π±Ρ‹Π»ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ список ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ для частых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ присваиваниС

Π”Π²Π΅ частыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ — индСксированиС ΠΈ присваиваниС Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ индСкса. Π’ списках Python значСния ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ ΠΈΠ· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… извСстных мСст памяти. НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, насколько Π²Π΅Π»ΠΈΠΊ список, индСксный поиск ΠΈ присвоСниС Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ постоянноС количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΡ… Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ O(1).

Pop, Shift, Delete

Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта(pop) ΠΈΠ· списка Python ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ выполняСтся с ΠΊΠΎΠ½Ρ†Π°, Π½ΠΎ, пСрСдавая индСкс, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. Когда pop вызываСтся с ΠΊΠΎΠ½Ρ†Π°, опСрация ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ O(1) , Π° Π²Ρ‹Π·ΠΎΠ² pop ΠΈΠ· любого мСста — O(n). ΠžΡ‚ΠΊΡƒΠ΄Π° такая Ρ€Π°Π·Π½ΠΈΡ†Π°?

Когда элСмСнт бСрСтся ΠΈΠ· сСрСдины списка Python, всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты Π² спискС ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π±Π»ΠΈΠΆΠ΅ ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ. Π­Ρ‚ΠΎ суровая ΠΏΠ»Π°Ρ‚Π° Π·Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±Ρ€Π°Ρ‚ΡŒ индСкс Π·Π° O(1), Ρ‡Ρ‚ΠΎ являСтся Π±ΠΎΠ»Π΅Π΅ частой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ.

По Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ вставка Π² индСкс — O(N); ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ сдвинут Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт. ΠΠ΅ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π²Π΅Π΄Π΅Ρ‚ сСбя Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

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

Π˜Ρ‚Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ выполняСтся Π·Π° O(N), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ для ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ N элСмСнтам трСбуСтся N шагов. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ in, max, min Π² Python являСтся O(N): Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, находится Π»ΠΈ элСмСнт Π² спискС, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт.

Π‘Ρ€Π΅Π·Ρ‹

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ [a: b] списка, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΌΠ΅ΠΆΠ΄Ρƒ индСксами a ΠΈ b. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, доступ ΠΊ срСзу — O(k), Π³Π΄Π΅ k — Ρ€Π°Π·ΠΌΠ΅Ρ€ срСза. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ срСза O(N) ΠΏΠΎ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Ρ‡Ρ‚ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта — O(N): N ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… элСмСнтов Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ смСщСны Π² сторону Π½Π°Ρ‡Π°Π»Π° списка.

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° int

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ списка Π½Π° Ρ†Π΅Π»ΠΎΠ΅ k, вспомним, Ρ‡Ρ‚ΠΎ конкатСнация выполняСтся Π·Π° O(M), Π³Π΄Π΅ M — Π΄Π»ΠΈΠ½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ списка. Из этого слСдуСт, Ρ‡Ρ‚ΠΎ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ списка Ρ€Π°Π²Π½ΠΎ O(N k), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ k-Ρ€Π°Π·ΠΌΠ΅Ρ€Π° списка N Ρ€Π°Π· ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ k (N-1).

Π Π°Π·Π²ΠΎΡ€ΠΎΡ‚ списка

Π Π°Π·Π²ΠΎΡ€ΠΎΡ‚ списка — это O(N), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ β„–1

Π”ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ ΡƒΡ‡Π°Ρ‚ΠΎΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π³Π΄Π΅ repeat_count Ρ€Π°Π· повторяСтся взятиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ pop ΠΏΠΎ индСксу pop_position.
БдСлаСтся Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ссли pop_position == None Ρ‚ΠΎ брался pop() Π±Π΅Π· указания индСкса. Π”ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ΄ получСния массивов values1, values2, values3. ΠŸΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠ΅ΡΡ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ.

import matplotlib.pyplot as plt
import time

def get_pop_time(size, repeat_count, pop_position=None):
    '''
    size - Ρ€Π°Π·ΠΌΠ΅Ρ€ списка ΠΈΠ· Π½ΡƒΠ»Π΅ΠΉ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ pop
    repeat_count - количСство ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ для усрСднСния
    pop_position - позиция с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄Π΅Π»Π°Π΅ΠΌ pop
    '''
    l = [0] * size
    start_time = time.time()
    #
    # code here
    #
    end_time = time.time()
    return (end_time - start_time) / repeat_count

repeat_count = 1000
# code here
values1 = [get_pop_time(...) for size in range(10, 1000)]
values2 = [get_pop_time(...) for size in range(10, 1000)]
values3 = [get_pop_time(...) for size in range(10, 1000)]

plt.plot(values1, label='Pop no args')
plt.plot(values2, label

Python 3: мноТСство — Π½Π°Π±ΠΎΡ€

На этом занятии ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Π½ΠΎΠ²ΠΎΠΌ Ρ‚ΠΈΠΏΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Python — мноТСствС (мноТСствС). По
ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ:

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ (Π½Π°Π±ΠΎΡ€) — это
нСупорядочСнная коллСкция ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов.

Π’ΠΎ Π΅ΡΡ‚ΡŒ
коллСкция, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ значСния. Для создания
ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

{Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅1,
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅2,…, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅N}

НапримСр:

Π’Ρ‹Π²Π΅Π΄Π΅ΠΌ Π²
консоль эту ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΈ Π΅Π΅ Ρ‚ΠΈΠΏ:

Π£Π²ΠΈΠ΄ΠΈΠΌ:

{1, 2, 3, ‘ΠΏΡ€ΠΈΠ²Π΅Ρ‚’} <класс 'Π½Π°Π±ΠΎΡ€'>

Π­Ρ‚ΠΎ объявлСниС
ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ.Волько Π² возмоТности ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Ρ‰Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ
ΠΊΠ»ΡŽΡ‡ΠΈ. Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π½Π΅Ρ‚ — Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, Ссли ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ
Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ значСния:

 a = {1,2,3, "ΠΏΡ€ΠΈΠ²Π΅Ρ‚", 2,3, "ΠΏΡ€ΠΈΠ²Π΅Ρ‚"} 

Ρ‚ΠΎ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚
ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹:

{1, 2, 3, ‘ΠΏΡ€ΠΈΠ²Π΅Ρ‚’}

И это ΠΊΠ»ΡŽΡ‡Π΅Π²Π°Ρ
ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этой ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ: ΠΎΠ½Π° автоматичСски отбрасываСт всС Π΄ΡƒΠ±Π»ΠΈ.

Π’ качСствС
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ числа ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ числа, строки,
ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ.НапримСр:

 a = {1,1, "ΠΏΡ€ΠΈΠ²Π΅Ρ‚", "ΠΏΡ€ΠΈΠ²Π΅Ρ‚", ("a", "b"), ("a", "b")} 

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

{‘ΠΏΡ€ΠΈΠ²Π΅Ρ‚’, 1, (‘a’, ‘b’)}

Π’Π°ΠΊΠΆΠ΅ мноТСство
ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ set:

ΠΈΠ»ΠΈ, ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²
качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° любой ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚:

 b = set (Β«ΠΏΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!Β»)
b = set ([1,1,2,3,5,3,2,1]) 

ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ функция Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅
Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ссли ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ пустоС мноТСство Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½Π΅
пустоС мноТСство, пустой ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ! ΠŸΡƒΡΡ‚ΠΎΠ΅ созданиС создаСтся ΠΈΠΌΠ΅Π½Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ
Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

Как моТно
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ мноТСство Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…? НапримСр, Ссли Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ· списка ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ
всС Π΄ΡƒΠ±Π»ΠΈ:

ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ
сначала ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² мноТСство ΠΈΠ· ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

Π°« Π·Π°Ρ‚Π΅ΠΌ,
ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² список, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ список Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

Π’ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ эту
ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ просто Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Python.ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, Π΄Π²Π΅
послСдниС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½Ρƒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

элСмСнтов
ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ†ΠΈΠΊΠ»Π° для:

 setA = {7,6,5,4,3}
для x в setA:
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (Ρ…) 

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅,
всС значСния Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ Π² консоль. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ
ΠΈΠΌΠ΅Π½Π½ΠΎ значСния мноТСств, индСксов Ρƒ этих элСмСнтов Π½Π΅Ρ‚, Ρ‚.ΠΊ. мноТСство — это
нСупорядочСнная коллСкция. И Π²ΠΎΡ‚ такая опСрация

ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ
ошибка.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ добавлСния / удалСния элСмСнтов Π² мноТСствС

Для добавлСния
элСмСнт Π² мноТСство ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ add:

И, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ
мноТСства — это измСняСмый Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, этот ΠΌΠ΅Ρ‚ΠΎΠ΄ сразу Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ этот ΠΌΠ΅Ρ‚ΠΎΠ΄
элСмСнт, Ссли Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π΅Ρ‰Π΅ Π½Π΅Ρ‚. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ссли ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ 7 Π΅Ρ‰Π΅ Ρ€Π°Π·:

Ρ‚ΠΎ мноТСство Π½Π΅
измСнится.

Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ
Π² мноТСство Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ сразу нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚ΠΎ для этого ΠΌΠΎΠΆΠ½ΠΎ
Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ обновлСния:

 Π³.update (["a", "b", (1,2)]) 

Π’ качСствС
Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, список, значСния
ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² мноТСство, разумССтся, с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ ΠΈΡ…
ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Или, Ρ‚Π°ΠΊ:

Π‘Ρ‚Ρ€ΠΎΠΊΠ° — это
Ρ‚ΠΎΠΆΠ΅ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈ Π΅Π³ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ символы Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² мноТСство. И
Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° обновлСния ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ
любой ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Для удалСния
элСмСнта ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ discard:

Если Π΅Ρ‰Π΅ Ρ€Π°Π·
ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π²ΠΎΠΉΠΊΡƒ:

Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅
ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΈ мноТСство Π½Π΅ измСнится.

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ для
ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ — ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ:

Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ
Ρ‚Π°ΠΊΠΎΠΉ Π²Ρ‹Π·ΠΎΠ²Π΅:

Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚
ошибка, Ρ‚.ΠΊ. Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 4 Π² мноТСствС ΡƒΠΆΠ΅ Π½Π΅Ρ‚. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ удалСния Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ значСния. Π­Ρ‚ΠΎ СдинствСнноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅
Π² Ρ€Π°Π±ΠΎΡ‚Π΅ этих Π΄Π²ΡƒΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Π’Π°ΠΊΠΆΠ΅ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ
элСмСнты ΠΌΠΎΠΆΠ½ΠΎ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° pop:

ΠŸΡ€ΠΈ этом ΠΎΠ½
Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ удаляСмоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° сам удаляСмый элСмСнт оказываСтся, Π² ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ,
случайным, Ρ‚.ΠΊ. мноТСство — это нСупорядочСнный список. Если Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄
для пустого мноТСства, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка:

НаконСц, Ссли
Π½ΡƒΠΆΠ½ΠΎ просто ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС элСмСнты ΠΈΠ· мноТСства, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄:

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ занятии ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± опСрациях Π½Π°Π΄ Π½ΠΈΠΌΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ возмоТности ΠΈΡ… сравнСния.

.

Python | ΠΌΠ΅Ρ‚ΠΎΠ΄ set ()

Набор , Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ для выполнСния, состоит ΠΈΠ· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ языка, Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ Π½Π° Π΅Π³ΠΎ языкС Python ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ сдСлан с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ set ().

ΠœΠ΅Ρ‚ΠΎΠ΄ set () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСобразования любого повторяСмого элСмСнта Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт ΠΈ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ повторяСмых элСмСнтов, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ Set.

Бинтаксис: Π½Π°Π±ΠΎΡ€ (итСрация)

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: Π›ΡŽΠ±Π°Ρ итСративная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, такая ΠΊΠ°ΠΊ список, ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠ»ΠΈ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: ΠŸΡƒΡΡ‚ΠΎΠΉ Π½Π°Π±ΠΎΡ€, Ссли Π½ΠΈ ΠΎΠ΄ΠΈΠ½ элСмСнт Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½. ΠžΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, Π½Π΅ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉΡΡ элСмСнт, итСрация ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°

Код β„– 1: ДСмонстрация Π½Π°Π±ΠΎΡ€Π° () со списком ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΌ

lis1 = [ 3 , , , 1 , 4 , 5 ]

tup1 = ( 3 , 000 , 000 , 4 , 5 )

print ( "Бписок Π΄ΠΎ прСобразования:" + 9 lis0009 str

) print ( "ΠšΠΎΡ€Ρ‚Π΅ΠΆ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ:" + str (tup1))

print ( "Бписок послС прСобразования:" + str ( set (lis1)))

print ( tuple послС прСобразования: " + str ( set (tup1)))

Π’Ρ‹Ρ…ΠΎΠ΄:

Бписок Π΄ΠΎ прСобразования: [3, 4, 1, 4, 5]
ΠšΠΎΡ€Ρ‚Π΅ΠΆ Π΄ΠΎ прСобразования: (3, 4, 1, 4, 5)
Бписок послС прСобразования: {1, 3, 4, 5}
ΠšΠΎΡ€Ρ‚Π΅ΠΆ послС прСобразования: {1, 3, 4, 5}
 

Бвойства мноТСства ()

  • ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ для создания пустого Π½Π°Π±ΠΎΡ€Π°
  • Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π°Π±ΠΎΡ€Π°, Π½ΠΎ послС прСобразования ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ»ΡŽΡ‡ΠΈ, значСния Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ.

Код β„– 2: ДСмонстрация Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π±ΠΎΡ€Π° Π½Π° основС

dic1 = { 4 : 000000000000000000 : 'для' , 3 : 'geeks' }

Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ( : : "+ " ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ словаря str (dic1))

print ( "Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ послС прСобразования:" + str ( ) Π½Π°Π±ΠΎΡ€

Π’Ρ‹Ρ…ΠΎΠ΄:

Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ: {1: "для", 3: "Π³ΠΈΠΊΠΈ", 4: "Π³ΠΈΠΊΠΈ"}
Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ послС прСобразования: {1, 3, 4}
 

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ посты:

ΠŸΠΈΡ‚ΠΎΠ½ | ΠΌΠ΅Ρ‚ΠΎΠ΄ set ()

0.00 (0%) 0 голосов

.

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

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