TGViewer
PYTHON IN DEPTH🐍 PYTHON IN DEPTH🐍 @python_in_depth · 386 subscribers
Post #34 396
Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² мноТСства

Set' Ρ‹ Π² Python Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ максимально Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ матСматичСскиС мноТСства. Π”Π°Π²Π°ΠΉΡ‚Π΅ пройдСмся ΠΏΠΎ основным свойствам ΠΈ возмоТностям мноТСств Π² Python, ΠΈ разбСрСмся, ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π’ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ мноТСство -- это Π½Π°Π±ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹. Π’ Python мноТСство Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

>>> A = {"My hovercraft is full of eels", 42, (3.14, 2.72)}

Но Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅: элСмСнты мноТСства Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ…ΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² мноТСство ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ строки, числа ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ, Π½ΠΎ нСльзя словари ΠΈ списки:

>>> A.add([-1, 0])
TypeError: unhashable type: 'list'

ΠŸΡ€ΠΈ этом ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сами мноТСства ΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹, Ρ‚ΠΎ мноТСство мноТСств, ΠΊΠ°ΠΊ Π² извСстном парадоксС ΠΏΡ€ΠΎ брадобрСя, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ получится. Но Ссли ΠΎΡ‡Π΅Π½ΡŒ хочСтся, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ frozenset’ы: эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅, Π½ΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ ΠΈ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² мноТСство.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мноТСство ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· конструктор класса set(). Π­Ρ‚ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ эквивалСнтны:

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

Волько Π½Π΅ Π·Π°ΠΏΡƒΡ‚Π°ΠΉΡ‚Π΅ΡΡŒ: такая инструкция

C = {}

создаст Π½Π΅ мноТСство, Π° ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ.

Π’ вСрсиях ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° 2.7 ΠΈ Π²Ρ‹ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ set comprehensions:

>>> C = {x for x in range(1, 5)}
>>> C
{1, 2, 3, 4}

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

>>> D = [1, 2, 3, 3]
>>> D = list(set(D))
>>> D
[1, 2, 3]

ΠšΡΡ‚Π°Ρ‚ΠΈ, мноТСства Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ порядок, поэтому Ссли ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½, Ρ‚ΠΎ Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² списки. Из-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ порядка Π½Π΅Ρ‚, Π²ΠΎ мноТСствах Π½Π΅Ρ‚ Π½ΠΈ индСксирования, Π½ΠΈ слайсов. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя Ρ†ΠΈΠΊΠ»Ρ‹ ΠΏΠΎ мноТСству ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ pythonic-способом:

>>> for elem in C:
... print(elem)

Над мноТСствами Π² Python ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅: Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ объСдинСниС, пСрСсСчСниС, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊ мноТСству ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ, Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ мноТСств:

A | B A.union(B)
A & B A.intersection(B)
A - B A.difference(B)
A <= B A.issubset(B)
A => B A.issuperset(B)
…

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ set’ы, Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ -- Π»ΡŽΠ±Ρ‹Π΅ iterable ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹. Π•ΡΡ‚ΡŒ ΠΌΠ½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠ΅Π½Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Π΅, Π½ΠΎ ΠΎΠ±Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π² Ρ†Π΅Π»ΠΎΠΌ Ρ€Π°Π²Π½ΠΎΠΏΡ€Π°Π²Π½Ρ‹.

И Π΅Ρ‰Π΅ Ρƒ класса set Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со мноТСствами ΠΊΠ°ΠΊ с коллСкциями:

add() β€” Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнт,
remove() β€” ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт,
pop() β€” ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ с ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ,
update() β€” ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ мноТСством,
clear() β€” ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ мноТСство.

И напослСдок: ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· я больно отстрСлила сСбС Π½ΠΎΠ³Ρƒ, ΠΊΠΎΠ³Π΄Π° Ρ…ΠΎΡ‚Π΅Π»Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ составной элСмСнт Π² мноТСство с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ инструмСнта. НапримСр, Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ мноТСство строк ΠΈ ΠΌΡ‹ пытаСмся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ элСмСнт Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

>>> F = {"Seregia", "Vasia"}
>>> F.update("Alisa")

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

>>> F
{'l', 'a', 'Seregia', 'Vasia', 'A', 'i', 's'}

Π­Ρ‚ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΎΠ½ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, поэтому Ρ‚Π°ΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΠΎ Π½Π΅Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ довольно Π΄ΠΎΠ»Π³ΠΎ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΠΉΡ‚Π΅ Π² Π»ΠΎΠ²ΡƒΡˆΠΊΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² add() ΠΈ update().

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Python set'Ρ‹ сильно Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ матСматичСскиС мноТСства: ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ элСмСнтов, Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ порядок ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΈΡ… ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ, ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°Ρ‚ΡŒ, etc... ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, мноТСства ΠΈΠΌΠ΅ΡŽΡ‚ интСрфСйс для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ ΠΊΠ°ΠΊ с коллСкциями.

Как ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π² Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ?
πŸ™ Если Π²Π°ΠΆΠ΅Π½ порядок β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ списки.
πŸ™ Если Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ словари.
πŸ™ Если Π½ΡƒΠΆΠ΅Π½ Π½Π°Π±ΠΎΡ€ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ мноТСства.
  • πŸ‘ 5
  • πŸ”₯ 2
  • πŸ™ 1
  • πŸ•Š 1
More from @python_in_depth
  1. Feb 20, 2026Β«ΠŸΡƒΠ·Ρ‹Ρ€ΡŒ Π»ΠΎΠΏΠ½ΡƒΠ»Β», Β«Π°ΠΉΡ‚ΠΈ всё», Β«Ρ€Ρ‹Π½ΠΎΠΊ ΡƒΠΌΠ΅Ρ€Β» β€” ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Ρ‡ΠΈΡ‚Π°Π΅ΠΌ это с Π½ΠΎΠ²Ρ‹ΠΌ интСрСсом. Но да…
  2. Feb 18, 2026«Какой Π½Π°Π²Ρ‹ΠΊ самый Π²Π°ΠΆΠ½Ρ‹ΠΉ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°?Β» ΠžΡ‚Π²Π΅Ρ‚ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ простой β€” ΡƒΠΌΠ΅Π½ΠΈΠ΅ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ быс…
  3. Feb 9, 2026Как Π½Π° самом Π΄Π΅Π»Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΡ‚Π±ΠΎΡ€ Ρ€Π΅Π·ΡŽΠΌΠ΅ Π² 2026 Π³ΠΎΠ΄Ρƒ Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Π½Π°ΠΉΠΌ β€” это Π½Π΅ Β«Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ чит…
  4. Feb 2, 2026Π’Π°Ρˆ backend слишком слоТный. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго β€” Π±Π΅Π· ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹. Π£ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ра…
  5. Jan 29, 2026Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с внСшними систСмами: ΠΊΠ°ΠΊ Π½Π΅ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ backend Π² Π·ΠΎΠΎΠΏΠ°Ρ€ΠΊ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ² Π Π°Π½ΠΎ ΠΈΠ»ΠΈ по…
  6. Jan 29, 2025Π•Π΅Π΅Π΅Π΅Π΅Π΅, Π° Ρ‡Π΅ ΠΌΡ‹ Π½Π°Π΄ js смССмся
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook β†’Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 β†’