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... ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΈΠΌΠ΅ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½ΠΈΠΌΠΈ ΠΊΠ°ΠΊ Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌΠΈ.
ΠΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡΡΡ Π² Π²ΡΠ±ΠΎΡΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ?
π ΠΡΠ»ΠΈ Π²Π°ΠΆΠ΅Π½ ΠΏΠΎΡΡΠ΄ΠΎΠΊ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ.
π ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»ΠΎΠ²Π°ΡΠΈ.
π ΠΡΠ»ΠΈ Π½ΡΠΆΠ΅Π½ Π½Π°Π±ΠΎΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°.