ΠΠΎΡΡΠ΅ΠΆΠΈ. Π£ΡΠΎΠΊ 20 ΠΊΡΡΡΠ° «Python. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅»
ΠΠΎΡΡΠ΅ΠΆΠΈ (tuple) Π² Python β ΡΡΠΎ ΡΠ΅ ΠΆΠ΅ ΡΠΏΠΈΡΠΊΠΈ Π·Π° ΠΎΠ΄Π½ΠΈΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠΎΡΡΠ΅ΠΆΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ . Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΊΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ², ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΡΡΡΡ. ΠΠΎΡΡΠ΅ΠΆΠΈ Π·Π°ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² ΠΊΡΡΠ³Π»ΡΠ΅, Π° Π½Π΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅.
>>> a = (10, 2.13, "square", 89, 'C') >>> a (10, 2.13, 'square', 89, 'C')
ΠΠ· ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈ Π±ΡΠ°ΡΡ ΡΡΠ΅Π·Ρ:
>>> a[3] 89 >>> a[1:3] (2.13, 'square')
ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π΅Π»ΡΠ·Ρ:
>>> a[0] = 11 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment
Π’Π°ΠΊΠΆΠ΅ Ρ ΡΠΈΠΏΠ° tuple Π½Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
ΠΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠ΅Π·ΠΎΠ½Π½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ. ΠΠ°ΡΠ΅ΠΌ Π² ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ» Π²Π²Π΅Π΄Π΅Π½ ΡΡΠΎΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎ-ΡΡΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠΎΠ±ΠΎΠΉ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΡΠΏΠΈΡΠΎΠΊ? ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π΄ΠΎ Π·Π°ΡΠΈΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΎΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΆΠ΅ ΠΊΠΎΡΡΠ΅ΠΆ Π² ΡΠΏΠΈΡΠΎΠΊ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π»Π΅Π³ΠΊΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ Π² Python ΡΡΠ½ΠΊΡΠΈΠΉ list() ΠΈ tuple():
>>> a = (10, 2.13, "square", 89, 'C') >>> b = [1, 2, 3] >>> c = list(a) >>> d = tuple(b) >>> c [10, 2.13, 'square', 89, 'C'] >>> d (1, 2, 3)
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° ΡΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠΈ. Π Python ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΊΠΎΠΏΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. Π ΠΈΡΠΎΠ³Π΅, Π΅ΡΠ»ΠΈ Π² ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΡΠΎ ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠ°ΡΠ°ΡΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
def addNum(seq, num): for i in range(len(seq)): seq[i] += num return seq Β origin = [3, 6, 2, 6] changed = addNum(origin, 3) Β print(origin) print(changed)
ΠΠ°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ. Π₯ΠΎΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π²ΡΠ±ΡΠΎΡΠΎΠ² ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ, ΠΎΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΡΡ ΠΎΡΠΈΠ±ΠΊΡ. ΠΠ° Π²ΡΠ²ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ:
[6, 9, 5, 9] [6, 9, 5, 9]
Π’ΠΎ Π΅ΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π±ΡΠ» ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ seq ΡΠΎΠ΄Π΅ΡΠΆΠ°Π» ΡΡΡΠ»ΠΊΡ Π½Π΅ Π½Π° ΡΠ²ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, Π° Π½Π° ΡΠΏΠΈΡΠΎΠΊ-ΠΎΡΠΈΠ³ΠΈΠ½Π°Π». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ return Π·Π΄Π΅ΡΡ Π½Π΅Ρ ΡΠΌΡΠ»Π°. ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π·Π°ΠΌΡΡΠ»ΠΈΠ²Π°Π»Π°ΡΡ ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠ°Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
def addNum(seq, num): for i in range(len(seq)): seq[i] += num Β origin = [3, 6, 2, 6] addNum(origin, 3) print(origin)
Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ ΠΆΠ΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, Π° ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ Π½Π΅ΠΌΡ Π½ΠΎΠ²ΡΠΉ. ΠΠ°Π΄Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ. ΠΠΎ ΠΏΠ΅ΡΠ²ΡΡ , Π² ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π΅Π³ΠΎ:
def addNum(seq, num): new_seq = [] for i in seq: new_seq.append(i + num) return new_seq Β origin = [3, 6, 2, 6] changed = addNum(origin, 3) Β print(origin) print(changed)
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
[3, 6, 2, 6] [6, 9, 5, 9]
ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π² ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ. ΠΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡΡΡ.
ΠΡΠΎΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΡΠΈΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ-ΠΎΡΠΈΠ³ΠΈΠ½Π°Π» β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΡΡΠ΅ΠΆ. ΠΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ ΡΡΡΠ΄Π½ΠΎ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ, ΡΡΠΎ Π½ΠΈ ΠΎΠ΄Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ .
Π₯ΠΎΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΊ ΠΊΠΎΡΡΠ΅ΠΆΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ Π² ΡΡΠ½ΠΊΡΠΈΡ, ΡΠ°ΠΊ ΠΈ Π² ΡΠ°ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π»ΡΡΡΠ΅ ΡΡΠ°Π·Ρ Π΄Π΅Π»Π°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΌ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π° Π½Π΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, ΡΠΎ Π² ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ ΠΊΠΎΠΏΠΈΡ ΡΡΡΡΠΊΡΡΡΡ, Π° Π½Π΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π». ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΡΠ΄Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π», ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠΎΠΆΠ½ΠΎ Π»ΠΈΡΡ, ΠΊΠ°ΠΊ Π²Π°ΡΠΈΠ°Π½Ρ, ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΈ/ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΈΠΏ, ΡΠΎΠ·Π΄Π°Π² ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ, ΠΈ Π΄Π΅Π»Π°ΡΡ Ρ Π½Π΅ΠΉ Π²ΡΠ΅, ΡΡΠΎ Π·Π°Π±Π»Π°Π³ΠΎΡΠ°ΡΡΡΠ΄ΠΈΡΡΡ.
def addNum(seq, num): seq = list(seq) for i in range(len(seq)): seq[i] += num return seq Β origin = (3, 6, 2, 6) changed = addNum(origin, 3) Β print(origin) print(changed)
Π‘ΠΏΠΈΡΠΊΠΈ Π² ΠΊΠΎΡΡΠ΅ΠΆΠ°Ρ
ΠΠΎΡΡΠ΅ΠΆΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΏΠΈΡΠΊΠΈ, ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΊΠΈ Π±ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ Π² Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠΈ.
>>> nested = (1, "do", ["param", 10, 20])
ΠΠ°ΠΊ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅, ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ [«param», 10, 20] Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ Π² ΠΊΠΎΡΡΠ΅ΠΆ nested? Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ, ΠΊΠΎΡΡΠ΅ΠΆ β Π½Π΅Ρ. ΠΡΠ»ΠΈ Π²Π°ΠΌ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ Π½Π΅Π»ΡΠ·Ρ, ΡΠΎ Π²Π°ΠΌ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΌΠΎΠΆΠ½ΠΎ:
>>> nested[2][1] = 15 >>> nested (1, 'do', ['param', 15, 20])
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° nested[2][1]
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ. ΠΠ΅ΡΠ²ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π²ΡΠΎΡΠΎΠΉ β ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π²Π½ΡΡΡΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π’Π°ΠΊ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°ΠΌ ΡΠΏΠΈΡΠΎΠΊ Π²Π½ΡΡΡΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ 2, Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΠΈΡΠΊΠ° 10 β ΠΈΠ½Π΄Π΅ΠΊΡ 1 Π² ΡΠΏΠΈΡΠΊΠ΅.
Π‘ΡΡΠ°Π½Π½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ. ΠΠΎΡΡΠ΅ΠΆ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ, Π½ΠΎ ΠΌΡ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΊΠΎΡΡΠ΅ΠΆ ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌ. ΠΡΠΎΡΡΠΎ Π² Π½Π΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π½Π΅ ΡΠ°ΠΌ ΡΠΏΠΈΡΠΎΠΊ, Π° ΡΡΡΠ»ΠΊΠ° Π½Π° Π½Π΅Π³ΠΎ. ΠΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π΅Π»ΡΠ·Ρ. ΠΠΎ ΠΌΠ΅Π½ΡΡΡ ΡΠ°ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ.
Π§ΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ΅ΠΌ ΠΊΠΎΡΡΠ΅ΠΆ ΡΠ°ΠΊ:
>>> l = ["param", 10, 20] >>> t = (1, "do", l) >>> t (1, 'do', ['param', 10, 20])
ΠΠΎΡΡΠ΅ΠΆ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ-ΡΡΡΠ»ΠΊΡ. ΠΠΎΠΌΠ΅Π½ΡΡΡ Π΅Π΅ Π½Π° Π΄ΡΡΠ³ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π΅Π»ΡΠ·Ρ. ΠΠΎ ΠΊΠΎΡΡΠ΅ΠΆ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. ΠΠΎΡΡΠΎΠΌΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡ ΠΊΠ°ΠΊ ΡΠ³ΠΎΠ΄Π½ΠΎ:
>>> l.pop(0) 'param' >>> t (1, 'do', [10, 20])
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΠ°ΠΊΠΎΠΉ Π½ΠΎΠΌΠ΅Ρ Π½Π΅ ΠΏΡΠΎΠΊΠ°ΡΡΠ²Π°Π΅Ρ Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ:
>>> a = "Kat" >>> t = (a, l) >>> t ('Kat', [10, 20]) >>> a = "Bat" >>> t ('Kat', [10, 20])
ΠΠ½ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² ΠΊΠΎΡΡΠ΅ΠΆ ΠΊΠ°ΠΊ ΠΈ Π² ΡΡΠ½ΠΊΡΠΈΡ β ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π’. Π΅. ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ.
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ°Π±ΠΎΡΠ°
Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°, Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΡΡΠ΅ΠΆ. ΠΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΅Π³ΠΎ ΠΊΠΎΠΏΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΏΠΈΡΠΊΠ° copy() ΠΈΠ»ΠΈ Π²Π·ΡΡΡ ΡΡΠ΅Π· ΠΎΡ Π½Π°ΡΠ°Π»Π° Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° [:]. Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΈ Π²ΡΠΎΡΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΈ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΉ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΎΡΡΠ°ΠΆΠ°Π΅ΡΡΡ Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π΅.
ΠΠ°ΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΡΡΠ΅ΠΆ Π΄Π΅ΡΡΡΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌΠΈ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΎΡ 0 Π΄ΠΎ 5 Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ. Π’Π°ΠΊΠΆΠ΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π²ΡΠΎΡΠΎΠΉ ΠΊΠΎΡΡΠ΅ΠΆ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΎΡ -5 Π΄ΠΎ 0. ΠΠ»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ ΡΠΈΡΠ»Π°ΠΌΠΈ Π½Π°ΠΏΠΈΡΠΈΡΠ΅ ΠΎΠ΄Π½Ρ ΡΡΠ½ΠΊΡΠΈΡ. ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅ Π΄Π²Π° ΠΊΠΎΡΡΠ΅ΠΆΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° +, ΡΠΎΠ·Π΄Π°Π² ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΡΠ΅ΡΠΈΠΉ ΠΊΠΎΡΡΠ΅ΠΆ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠΎΡΡΠ΅ΠΆΠ° count() ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ Π² Π½Π΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½ΡΠ»Π΅ΠΉ. ΠΡΠ²Π΅Π΄ΠΈΡΠ΅ Π½Π° ΡΠΊΡΠ°Π½ ΡΡΠ΅ΡΠΈΠΉ ΠΊΠΎΡΡΠ΅ΠΆ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½ΡΠ»Π΅ΠΉ Π² Π½Π΅ΠΌ.
ΠΡΠΈΠΌΠ΅ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π² android-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ pdf-Π²Π΅ΡΡΠΈΠΈ ΠΊΡΡΡΠ°.
younglinux.info
ΠΡΠ½ΠΎΠ²Ρ Python β ΠΊΡΠ°ΡΠΊΠΎ. Π§Π°ΡΡΡ 3. Π‘ΠΏΠΈΡΠΊΠΈ, ΠΊΠΎΡΡΠ΅ΠΆΠΈ, ΡΠ°ΠΉΠ»Ρ. / Habr
Π ΠΎΠ±ΡΠ΅ΠΌ-ΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΈΠ· Π³ΠΎΡΠΎΠ²ΡΡ Π³Π»Π°Π². ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ Π±ΡΠ΄ΡΡ Π²ΡΡ ΠΎΠ΄ΠΈΡΡ ΡΡΡΡ ΡΠ΅ΠΆΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΅ΡΠ΅ Π½Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Ρ (Π½ΠΎ Ρ ΡΠ²Π΅ΡΠ΅Π½ ΡΡΠΎ Π±ΡΠ΄ΡΡ, Ρ ΠΎΡΡ ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ Π²Π°ΡΠΈΡ ΠΏΠΎΠΆΠ΅Π»Π°Π½ΠΈΠΉ, ΡΠ²Π°ΠΆΠ°Π΅ΠΌΡΠ΅ ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ πΠ’Π°ΠΊΠΆΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΡΡΠΎ ΡΡΠΎ ΡΡΠΎ, Π²ΠΈΠ΄ΠΈΠΌΠΎ, ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Β«ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΠΎΠΊΒ», Π΄Π°Π»ΡΡΠ΅ Ρ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΡΠ³Π»ΡΠ±ΠΈΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΏΡΠΎΡΠ»ΠΈ Β«ΠΏΠΎ Π²Π΅ΡΡ Π°ΠΌΒ» ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ.
Π ΠΎΠ±ΡΠ΅ΠΌ, ΡΠ΅ ΠΊΠΎΠΌΡ Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ β ΡΠΈΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ Π½ΠΎΠ²ΠΎΡΡΡ, Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΡ β ΠΏΡΠΎΡΡ ΠΏΡΠΎΠΉΡΠΈ .
Python Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ . ΠΠ»Π°Π²Π° ΡΡΠ΅ΡΡΡ. Β«List, tuple, etc.Β»
ΠΠΎΡΡΠ΅ΠΆΠΈ.
ΠΠΎΡΡΠ΅ΠΆΠΈ (Π°Π½Π³Π». tuple) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ°Π·Π½ΠΎΡΠΎΠ΄Π½ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠ½ΠΈ ΠΎΠ±ΡΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΠΊΡΡΠ³Π»ΡΡ
ΡΠΊΠΎΠ±ΠΊΠ°Ρ
, Π½ΠΎ Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠΈ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, ΡΠΎ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΡΡΠΈΡΡ.
>>> t = (2, 2.05, "Hello") >>> t (2, 2.0499999999999998, 'Hello') >>> (a, b, c) = t >>> print a, b, c 2 2.05 Hello >>> z, y, x = t >>> print z, y, x 2 2.05 Hello >>> a=1 >>> b=2 >>> a,b=b,a >>> print a,b 2 1 >>> x = 12, >>> x (12,)
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΊΠΎΡΡΠ΅ΠΆ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΠΈ Π² Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ. ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΠΊΠΎΡΡΠ΅ΠΆΠ° Π² Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ. ΠΡΠΎΡ ΡΠ°ΠΊΡ ΠΊΠ°ΠΊ ΡΠ°Π· ΠΈ Π΄Π°Π΅Ρ Π½Π°ΠΌ ΡΠ°ΠΊΠΈΠ΅ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΎΠ²Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»ΠΌΠ΅Π½ΡΠ° (Π΅Π³ΠΎ ΡΠ°ΡΡΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ ΡΠΈΠ½Π³Π»ΡΠΎΠ½ΠΎΠΌ). Π‘ΠΏΠΈΡΠΊΠΈ
Π ΠΠ°ΠΉΡΠΎΠ½Π΅ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ Π² ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°. ΠΠΌΠ΅ΡΡΠΎ Π½ΠΈΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½ΡΡ (ΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ) ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΏΠΈΡΠΊΠΈ. ΠΠ½ΠΈ Π·Π°Π΄Π°ΡΡΡΡ ΡΡΠ΅ΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ.
ΠΡΠΎΡΡΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅:
>>> a = [2, 2.25, "Python"] >>> a [2, 2.25, 'Python']
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ ΡΡΡΠΎΠΊΡ Π² ΡΠΏΠΈΡΠΎΠΊ
>>> b = list("help") >>> b ['h', 'e', 'l', 'p']
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠ²ΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ Π±Π΅ΡΠ΅ΠΌ ΠΊΡΠ±Ρ Π²ΡΠ΅Ρ Π½Π΅ΡΠ΅ΡΠ½ΡΡ ΡΠΈΡΠ΅Π» ΠΎΡ 0 Π΄ΠΎ 19. ΠΡΠΎΠΌΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ Ρ ΠΏΠ»Π°Π½ΠΈΡΡΡ ΠΏΠΎΡΠ²ΡΡΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ Π·Π°Π½ΡΡΠΈΠ΅.
>>> c = [x ** 3 for x in range(20) if x%2==1] >>> c [1, 27, 125, 343, 729, 1331, 2197, 3375, 4913, 6859]
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΡΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ:
len(s) ΠΠ»ΠΈΠ½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ s
x in s ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. Π Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡΡ Python ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ ΡΡΡΠΎΠΊΠ΅. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ True ΠΈΠ»ΠΈ False
x not in s = not x in s
s + s1 ΠΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ
s*n ΠΈΠ»ΠΈ n*s ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠ· n ΡΠ°Π· ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½Π½ΠΎΠΉ s. ΠΡΠ»ΠΈ n
s[i] ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ i-ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ s ΠΈΠ»ΠΈ len(s)+i-ΠΉ, Π΅ΡΠ»ΠΈ i
s[i:j:d] Π‘ΡΠ΅Π· ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ s ΠΎΡ i Π΄ΠΎ j Ρ ΡΠ°Π³ΠΎΠΌ d Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ Π½ΠΈΠΆΠ΅
min(s) ΠΠ°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ s
max(s) ΠΠ°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ s
s[i] = x i-ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΠΈΡΠΊΠ° s Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° x
s[i:j:d] = t Π‘ΡΠ΅Π· ΠΎΡ i Π΄ΠΎ j (Ρ ΡΠ°Π³ΠΎΠΌ d) Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° (ΡΠΏΠΈΡΠΎΠΊ) t
del s[i:j:d] Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ΅Π·Π° ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΄Π»Ρ ΡΠΏΠΈΡΠΊΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΡΠ΄ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
append(x) ΠΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΊΠΎΠ½Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
count(x) Π‘ΡΠΈΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΠ°Π²Π½ΡΡ
x
extend(s) ΠΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊ ΠΊΠΎΠ½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ s
index(x) ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π΅ i, ΡΠ°ΠΊΠΎΠ΅, ΡΡΠΎ s[i] == x. ΠΠΎΠ·Π±ΡΠΆΠ΄Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ValueError, Π΅ΡΠ»ΠΈ x Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ Π² s
insert(i, x) ΠΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ x Π² i-ΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ
pop(i) ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ i-ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΡΠ΄Π°Π»ΡΡ Π΅Π³ΠΎ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
reverse() ΠΠ΅Π½ΡΠ΅Ρ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² s Π½Π° ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ
sort([cmpfunc]) Π‘ΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ s. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½Π° ΡΠ²ΠΎΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ cmpfunc
ΠΠ»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΆΠ° Π² ΡΠΏΠΈΡΠΎΠΊ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ list, Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ β tuple.
ΠΠ± ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΏΠΈΡΠΊΠΎΠ² ΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΅ΡΠ΅ ΡΠ°Π· ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ (ΡΡΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΈ Π΄Π»Ρ ΡΡΡΠΎΠΊ). ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½ΡΠΌΠ΅ΡΡΡΡΡΡ Ρ Π½ΡΠ»Ρ. ΠΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ ΠΊΠΎΠ½ΡΠ°. ΠΠ΅ΡΠ²ΡΠΉ Ρ ΠΊΠΎΠ½ΡΠ° ΡΠΏΠΈΡΠΊΠ° (ΡΡΡΠΎΠΊΠΈ) ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ -1.
>>> s = [0, 1, 2, 3, 4] >>> print s[0], s[-1], s[3] 0 4 3 >>> s[2] = -2 >>> print s [0, 1, -2, 3, 4] >>> del s[2] >>> print s [0, 1, 3, 4]
Π‘Π»ΠΎΠΆΠ½Π΅Π΅ ΠΎΠ±ΡΡΠΎΡΡ Π΄Π΅Π»Π° ΡΠΎ ΡΡΠ΅Π·Π°ΠΌΠΈ. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π·ΠΎΠ² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π² ΠΠ°ΠΉΡΠΎΠ½Π΅ ΠΏΡΠΈΠ½ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π΅ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π° Π½ΠΎΠΌΠ΅ΡΠ° Β«ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠΎΠ²Β» ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ. ΠΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ 0, ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΎΡΡΠΌ β 1 ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ ΠΊΠΎΠ½ΡΠ° ΡΡΡΠΎΠΊΠΈ.
Π ΠΎΠ±ΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ ΡΡΠ΅Π· Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅:
ΡΠΏΠΈΡΠΎΠΊ[Π½Π°ΡΠ°Π»ΠΎ: ΠΊΠΎΠ½Π΅Ρ: ΡΠ°Π³]
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π°ΡΠ°Π»ΠΎ ΡΡΠ΅Π·Π° ΡΠ°Π²Π½ΠΎ 0, ΠΊΠΎΠ½Π΅Ρ ΡΡΠ΅Π·Π° ΡΠ°Π²Π΅Π½ len(ΡΠΏΠΈΡΠΎΠΊ), ΡΠ°Π³ ΡΠ°Π²Π΅Π½ 1. ΠΡΠ»ΠΈ ΡΠ°Π³ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, Π²ΡΠΎΡΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Β«:Β» ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΡΡΠΈΡΡ.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ΅Π·Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ ΡΠΏΠΈΡΠΊΠ° Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ, Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ Π½ΡΠ»Π΅Π²ΠΎΠΉ Π΄Π»ΠΈΠ½Π΅. ΠΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ ΡΠΏΠΈΡΠΊΠ° Π² ΡΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ.
>>> l = range(12) >>> l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] >>> l[1:3] [1, 2] >>> l[-1:] [11] >>> l[::2] [0, 2, 4, 6, 8, 10] >>> l[0:1]=[-1,-1,-1] >>> l [-1, -1, -1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] >>> del l[:3] >>> l [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
Π‘Π»ΠΎΠ²Π°ΡΠΈ
Π‘Π»ΠΎΠ²Π°ΡΡ (Ρ ΡΡ, ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²) β ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ , ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²ΠΈΠ΄Π° ΠΊΠ»ΡΡ: Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ
Π΅ΡΠΈ.
>>> h2 = {1:"one", 2:"two", 3:"three"} >>> h3 = {0:"zero", 5:"five"} >>> h4 = {"z":1, "y":2, "x":3} #Π¦ΠΈΠΊΠ» ΠΏΠΎ ΠΏΠ°ΡΠ΅ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ >>> for key, value in h2.items(): ... print key, " ", value ... 1 one 2 two 3 three #Π¦ΠΈΠΊΠ» ΠΏΠΎ ΠΊΠ»ΡΡΠ°ΠΌ >>> for key in h3.keys(): ... print key, " ", h3[key] ... 0 zero 5 five #Π¦ΠΈΠΊΠ» ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ >>> for v in h4.values(): ... print v ... 2 3 1 #ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ· Π΄ΡΡΠ³ΠΎΠ³ΠΎ Ρ Π΅ΡΠ° >>> h2.update(h4) #ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°Ρ Π² Ρ Π΅ΡΠ΅ >>> len(h2) 6
Π’ΠΈΠΏ file
ΠΠ±ΡΠ΅ΠΊΡΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ. Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π΄Π°Π½Π½ΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΉΠ» Π½Π° Π΄ΠΈΡΠΊΠ΅, Π½ΠΎ ΡΡΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ°ΠΊ. Π€Π°ΠΉΠ»ΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ: read(), write(), readline(), readlines(), seek(), tell(), close() ΠΈ Ρ.ΠΏ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°:
f1 = open("file1.txt", "r") f2 = open("file2.txt", "w") for line in f1.readlines(): f2.write(line) f2.close() f1.close()
(ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠ°ΡΡΠΎΠΉ Π΄ΡΡΠ³ΠΈΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ², ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΡΡΠΈ, Π½ΠΎ ΡΡΠΎ ΡΠΎΠΆΠ΅ ΡΠ΅ΠΌΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠ°)
Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π±Π΅Π·ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½ ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° ΡΠ°ΠΉΠ», ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ. Π’Π°ΠΊ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° ΠΈΠ· ΠΠ½ΡΠ΅ΡΠ½Π΅, Π·Π°ΠΌΠ΅Π½ΠΈΠ² Π² Π½Π΅ΠΌ ΠΏΠ΅ΡΠ²ΡΡ ΡΡΡΠΎΠΊΡ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄.
import urllib f1 = urllib.urlopen("http://python.onego.ru")
ΠΠ°Π΄Π°ΡΠΈ:
β Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Β«ΠΌΠ°ΡΡΠΎΠ²ΠΎΠΉ Π·Π°ΠΊΠ°ΡΠΊΠΈΒ» URL-ΠΎΠ² ΠΈΠ· ΡΠ°ΠΉΠ»Π° urls.txt
β Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ URL ΡΠΎ Π²ΡΠ΅ΠΌ Π΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ.
β ΠΠ°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ² Π½Π° Π²Ρ ΠΎΠ΄Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠ΄Π°Π»ΠΈΡ ΠΈΠ· Π½Π΅Π³ΠΎ Π²ΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ.
habr.com
ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ. ΠΠΈΡΠ΅ΠΌ ΠΊΠΎΠ΄ Π½Π° Python ΡΠΈΡΠ΅ / Habr
Π ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΏΠΈΡΠΎΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΈΠΏ «namedtuple», ΠΊΠΎΡΠΎΡΡΠΉ, ΠΊΠ°ΠΆΠ΅ΡΡΡ, Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ½ Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ. ΠΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΡ ΡΠΈΡ Π² ΠΏΠΈΡΠΎΠ½Π΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΊΡΡΡΠ° Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π²Π·Π³Π»ΡΠ΄Π°.
ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΠ»ΠΈΡΠ½ΠΎΠΉ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Ρ ΠΎΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π²Π°ΠΌ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
Π’Π°ΠΊ ΡΡΠΎ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ ΠΈ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ? Π₯ΠΎΡΠΎΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΡΠ°Π·ΠΌΡΡΠ»ΡΡΡ Π½Π°Π΄ ΡΡΠΈΠΌ β ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π°Π΄ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ°ΠΌΠΈ.
ΠΠΎΡΡΠ΅ΠΆΠΈ Π² ΠΏΠΈΡΠΎΠ½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠΎΡΡΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠΎΡΡΠ΅ΠΆΠΈ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ β ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ ΠΏΠΎΡΠ»Π΅ ΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ.
>>> tup = ('hello', object(), 42)
>>> tup
('hello', <object object at 0x105e76b70>, 42)
>>> tup[2]
42
>>> tup[2] = 23
TypeError: "'tuple' object does not support item assignment"
ΠΠ±ΡΠ°ΡΠ½Π°Ρ ΡΡΠΎΡΠΎΠ½Π° ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ. ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π°ΡΡ ΠΈΠΌΠ΅Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΡΠΎΡ ΡΠ°Π½ΡΠ½Π½ΡΠΌ Π² ΠΊΠΎΡΡΠ΅ΠΆΠ΅. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π°.
Π’Π°ΠΊΠΆΠ΅, ΠΊΠΎΡΡΠ΅ΠΆ Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ·ΠΊΠΎΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ. Π’ΡΠΆΠ΅Π»ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π±Ρ Π΄Π²Π° ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΈΠΌΠ΅Π»ΠΈ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠΎΡ ΡΠ°Π½ΡΠ½Π½ΡΠ΅ Π² Π½ΠΈΡ . ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΈΡ Π»ΡΠ³ΠΊΠΈΠΌΠΈ Π΄Π»Ρ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π° ΡΠΎ βslip-of-the-mindβ Π±Π°Π³Π°ΠΌΠΈ, Π³Π΄Π΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅ΡΠ΅ΠΏΡΡΠ°ΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠΎΠ»Π΅ΠΉ.
Π¦Π΅Π»Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ β ΡΠ΅ΡΠΈΡΡ ΡΡΠΈ Π΄Π²Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΊΠΎΡΡΠ΅ΠΆΠ°ΠΌ. ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΈΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ»ΠΈ Π² Π½ΠΈΡ .
ΠΡΠΎΠΌΠ΅ ΡΡΠΎΠ³ΠΎ, ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΡΡΠΎ, ΡΠΌ…, ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΠΉ Π² Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠ΅ΡΠ΅Π· ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ, ΡΠ΄ΠΎΠ±Π½ΡΠΉ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ. ΠΡΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ Π²Π°Ρ ΠΎΡ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΈΠ»ΠΈ Π²ΡΠ΄ΡΠΌΡΠ²Π°Π½ΠΈΡ ΠΎΠ±Ρ ΠΎΠ΄Π½ΡΡ ΠΏΡΡΠ΅ΠΉ ΡΠΈΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΊΠ°ΠΊ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊ Π΄Π»Ρ Π²Π°ΡΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ².
ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ:
>>> from collections import namedtuple
>>> Car = namedtuple('Car' , 'color mileage')
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ collections
. ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ Π±ΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π² Python 2.6. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ
«Car» Ρ Π΄Π²ΡΠΌΡ ΠΏΠΎΠ»ΡΠΌΠΈ: «color» ΠΈ «mileage».
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ°Π½Π½ΡΠΌ Π·Π΄Π΅ΡΡ. ΠΠΎΡΠ΅ΠΌΡ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ ΠΏΠΎΠ»Ρ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΡ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Ρ «color mileage»?
ΠΡΠ²Π΅Ρ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°Π±ΡΠΈΠΊΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ
ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ split()
Π½Π° ΡΡΡΠΎΠΊΠΈ Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΏΠΎΠ»Π΅ΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΡΠΎΡΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ Π±Ρ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
>>> 'color mileage'.split()
['color', 'mileage']
>>> Car = namedtuple('Car', ['color', 'mileage'])
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΠΈΠΌΡΠ½ ΠΏΠΎΠ»Π΅ΠΉ Π½Π°ΠΏΡΡΠΌΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΡΠ΅ ΡΠ°ΠΊΠΎΠΉ ΡΡΠΈΠ»Ρ. ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅ΡΠ΅ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π΅Π³ΠΎ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»ΠΈΠ½ΠΈΠΉ:
>>> Car = namedtuple('Car', [
... 'color',
... 'mileage',
... ])
ΠΠ°ΠΊ Π±Ρ Π²Ρ Π½ΠΈ ΡΠ΅ΡΠΈΠ»ΠΈ, ΡΠ΅ΠΉΡΠ°Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ «car» ΡΠ΅ΡΠ΅Π· ΡΠ°Π±ΡΠΈΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Car
. ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ Π²Ρ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠ»Π°ΡΡ Car
Π²ΡΡΡΠ½ΡΡ ΠΈ Π΄Π°ΡΡ Π΅ΠΌΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΡ «color» ΠΈ «mileage»:
>>> my_car = Car('red', 3812.4)
>>> my_car.color
'red'
>>> my_car.mileage
3812.4
Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ‘*’ Π΄Π»Ρ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ:
>>> color, mileage = my_car
>>> print(color, mileage)
red 3812.4
>>> print(*my_car)
red 3812.4
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΡΠΎΡ ΡΠ°Π½ΡΠ½Π½ΡΠΌ Π² ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ ΡΠ΅ΡΠ΅Π· ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, Π²Ρ Π²ΡΡ Π΅ΡΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π½ΠΈΠΌ ΡΠ΅ΡΠ΅Π· ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡ. ΠΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Π΄Π»Ρ ΠΈΡ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π² ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ:
>>> my_car[0]
'red'
>>> tuple(my_car)
('red', 3812.4)
ΠΡ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΡΠ°ΡΠΈΠ²ΠΎΠ΅ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ, ΡΡΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π²Π°ΠΌ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠΏΠ°ΡΡΡ ΠΎΡ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΡΡΠΈ:
>>> my_car
Car(color='red' , mileage=3812.4)
ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ, ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ. ΠΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΈΡ
ΠΏΠΎΠ»Π΅ΠΉ, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ AttributeError
:
>>> my_car.color = 'blue'
AttributeError: "can't set attribute"
ΠΠ±ΡΠ΅ΠΊΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ Π² ΠΏΠΈΡΠΎΠ½Π΅ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ. ΠΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠΎ ΠΎΠ½ΠΈ ΡΠ°ΠΊ ΠΆΠ΅ «Π»ΡΡΡΠ΅», ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Ρ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ.
Π₯ΠΎΡΠΎΡΠΈΠΉ ΠΏΡΡΡ ΡΡΠ΄ΠΈΡΡ ΠΎ Π½ΠΈΡ β ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΊΡΠ°ΡΠΊΠΎΠΉ ΡΠΎΡΠΌΠΎΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²ΡΡΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ Ρ ΠΏΠ°ΠΌΡΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½Ρ Π½Π° ΠΎΠ±ΡΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠ°Ρ , ΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Π² ΠΊΠ»Π°ΡΡ, ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ°.
>>> Car = namedtuple('Car', 'color mileage')
>>> class MyCarWithMethods(Car):
... def hexcolor(self):
... if self.color == 'red':
... return '#ff0000'
... else:
... return '#000000'
Π‘Π΅ΠΉΡΠ°Ρ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ MyCarWithMethods ΠΈ Π²ΡΠ·Π²Π°ΡΡ ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ hexcolor() ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ:
>>> c = MyCarWithMethods('red', 1234)
>>> c.hexcolor()
'#ff0000'
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΠΊΠ»ΡΠΆΠ΅, ΡΠ°ΠΊΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠΎΡΡΠΈΠΌ Π΄Π΅Π»ΠΎΠΌ Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠ»Π°ΡΡ Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ. ΠΠΎ Π²Ρ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΡΠ΅Π»ΠΈΡΡ ΡΠ΅Π±Π΅ Π½ΠΎΠ³Ρ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°Π²Π΅ΡΠ·Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΡΡΡΡΠΎΠ΅Π½Ρ Π²Π½ΡΡΡΠΈ. ΠΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ._fields Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ°:
>>> Car = namedtuple('Car', 'color mileage')
>>> ElectricCar = namedtuple(
... 'ElectricCar', Car._fields + ('charge',))
ΠΡΠΎ Π΄Π°ΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
>>> ElectricCar('red', 1234, 45.0)
ElectricCar(color='red', mileage=1234, charge=45.0)
ΠΡΠΎΠΌΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° _fields ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ. ΠΡΠ΅ ΠΈΡ ΠΈΠΌΠ΅Π½Π° Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΡΠΎ Π·Π½Π°ΠΊΠ° ΠΏΠΎΠ΄ΡΡΡΠΊΠΈΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π³ΠΎΠ²ΠΎΡΠΈΡ Π½Π°ΠΌ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ «ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠ΅» ΠΈ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΡΡΡΠΎΡΠ²ΡΠ΅Π³ΠΎΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ, ΡΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ ΡΡ ΡΠΎ Π·Π½Π°ΠΊΠ° ΠΏΠΎΠ΄ΡΡΡΠΊΠΈΠ²Π°Π½ΠΈΡ Π·Π΄Π΅ΡΡ ΠΈΠΌΠ΅Π΅Ρ Π΄ΡΡΠ³ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅: ΡΡΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ. Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΏΠΎΠ΄ΡΡΡΠΊΠΈΠ²Π°Π½ΠΈΡ Π² ΡΡΠΈΡ ΠΈΠΌΠ΅Π½Π°Ρ Π±ΡΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΠΈΠΌΡΠ½ Ρ ΠΏΠΎΠ»ΡΠΌΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ. Π’Π°ΠΊ ΡΡΠΎ, Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ , Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ!
Π― Ρ ΠΎΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π²Π°ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Π³Π΄Π΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½ΡΠΌ Ρ ΠΌΠ΅ΡΠΎΠ΄Π° _asdict(). ΠΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ° Π² Π²ΠΈΠ΄Π΅ ΡΠ»ΠΎΠ²Π°ΡΡ:
>>> my_car._asdict()
OrderedDict([('color', 'red'), ('mileage', 3812.4)])
ΠΡΠΎ ΠΎΡΠ΅Π½Ρ Π·Π΄ΠΎΡΠΎΠ²ΠΎ Π΄Π»Ρ ΠΈΠ·Π±Π΅Π³Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΠΊ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ JSON, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
>>> json.dumps(my_car._asdict())
'{"color": "red", "mileage": 3812.4}'
ΠΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ β ΡΡΠ½ΠΊΡΠΈΡ _replace(). ΠΠ½Π° ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ½ΡΡ(shallow) ΠΊΠΎΠΏΠΈΡ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π²Π°ΠΌ Π²ΡΠ±ΠΎΡΠΎΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»Ρ:
>>> my_car._replace(color='blue')
Car(color='blue', mileage=3812.4)
Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° _make() ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ:
>>> Car._make(['red', 999])
Car(color='red', mileage=999)
ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΎΡΡΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, Π΄Π΅Π»Π°Ρ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π΅ΠΌΡΠΌ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ Π»ΡΡΡΠ΅Π΅ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ .
Π― Π½Π°Ρ ΠΎΠΆΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ ΠΏΡΡΡ ΠΎΡ ΡΠ·ΠΊΠΎΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ Ρ ΠΆΡΡΡΠΊΠΎ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠ»ΠΎΠ²Π°ΡΠΈ ΠΊ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌ ΠΊΠΎΡΡΠ΅ΠΆΠ°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΌΠ½Π΅ Π²ΡΡΠ°ΠΆΠ°ΡΡ ΠΌΠΎΠΈ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΡΠΎ. Π§Π°ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΡΡΠ°ΡΡΡ ΡΡΠΎ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΡΡ, ΡΠΎ Ρ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΡΡΠΈΠ³Π°Ρ Π»ΡΡΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ ΠΈ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΆΠΈΠ·Π½Ρ ΠΌΠΎΠΈΡ ΠΊΠΎΠ²ΠΎΡΠΊΠ΅ΡΠΎΠ² Π»Π΅Π³ΡΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΈ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ, ΡΠ°ΠΌΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΡΡΡΠΈΠΌΡΡ(Π² Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ) ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Ρ ΡΡΠ°ΡΠ°ΡΡΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΡΠ°Π΄ΠΈ ΠΈΡ ΠΏΠΎΠ»ΡΠ·Ρ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΌΠ½Π΅ ΠΏΠΈΡΠ°ΡΡ ΡΠΈΡΠ΅, ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½Π΅Π΅ ΠΈ Π½Π΅ Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Π»ΡΠ³ΠΊΠΈΠΌ Π² ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ. Π‘Π»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΠΎΡΠΈΡ Π²Π΅ΡΠ΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠ»ΠΎΡ ΠΎΠΉ Π²Π΅ΡΡΡ.
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΈΡ Ρ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡΡ, ΡΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ, Π±Π΅Π· ΡΠΎΠΌΠ½Π΅Π½ΠΈΡ, ΠΌΠΎΠ³ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ Π½Π° Python Π»ΡΡΡΠ΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ.
- collections.namedtuple β ΠΊΡΠ°ΡΠΊΠ°Ρ ΡΠΎΡΠΌΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²ΡΡΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ Ρ ΠΏΠ°ΠΌΡΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
- ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΠΈΡΠ΅, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ Π²Π°Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌΠΈ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ .
- ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΏΠΎΠ΄ΡΡΡΠΊΠΈΠ²Π°Π½ΠΈΡ (_), Π½ΠΎ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ β ΡΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°.
habr.com
Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½ΡΡ Π² Python β ΠΊΠΎΡΡΠ΅ΠΆ tuple
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ. ΠΠ°, ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ, ΠΈ Π²ΡΠ΅ ΠΆΠ΅…
ΠΠ°Ρ Π·ΠΎΠ²ΡΡ get_contacts
ΠΈ Π²Ρ ΡΠΌΠ΅Π΅ΡΠ΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡ ΠΊΠΎΠ½ΡΠ°ΠΊΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΏΠΎ email-Π°Π΄ΡΠ΅ΡΡ: Π΅Π³ΠΎ Π°Π΄ΡΠ΅Ρ, ΠΈΠΌΡ ΠΈ Π½ΠΎΠΌΠ΅Ρ ΡΠ΅Π»Π΅ΡΠΎΠ½Π°. ΠΡ Π½Π΅ ΠΏΡΠΎΡΡ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ, Π½ΠΎ Python Π²Π°ΠΌ ΡΡΠΎ Π·Π°ΠΏΡΠ΅ΡΠ°Π΅Ρ. ΠΠ΅Π»ΡΠ·Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π½Π½ΡΡ
ΡΠ°Π·ΠΎΠΌ, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΡΡΠΎ-ΡΠΎ ΠΎΠ΄Π½ΠΎ, ΡΠ°ΠΌΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅: Π°Π΄ΡΠ΅Ρ, ΠΈΠΌΡ, ΠΈΠ»ΠΈ ΡΠ΅Π»Π΅ΡΠΎΠ½ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°. ΠΠ»ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠ²ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠ²ΠΎΠΈ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΎΠ΄Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
ΠΠ°ΠΊ ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ
ΠΠ»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ get_contacts(email)
Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ
Π² Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ: ΡΠ»ΠΎΠ²Π°ΡΡ dict()
, ΠΊΠΎΡΡΠ΅ΠΆ tuple()
ΠΈ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΈΡ
. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β tuple
.
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ Π²ΡΠ·Π²Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ get_contacts('[email protected]')
, ΠΎΠ½Π° Π½Π°ΡΠ»Π° ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΈ Ρ
ΠΎΡΠ΅Ρ Π²Π΅ΡΠ½ΡΡΡ Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ°ΠΊΡΡ:
full_name = 'ΠΠΈΠΊΠΈΡΠΎΡΠΎΠ² ΠΠΌΠΈΡΡΠΈΠΉ ΠΠ½Π°ΡΠΎΠ»ΡΠ΅Π²ΠΈΡ' city = 'ΠΠΎΡΠΊΠ²Π°' phone_number = '929-876-54-32'
Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΆ β tuple()
β, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π² Π½Π΅Π³ΠΎ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠ°ΠΊΡΡ:
contacts = (full_name, city, phone_number)
ΠΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΈ Π·Π°ΠΏΡΡΡΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Python, ΡΡΠΎ ΠΈΠ· ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
full_name
, city
ΠΈ phone_number
Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
:
print(type(contacts)) # Π²ΡΠ²Π΅Π΄Π΅Ρ <class 'tuple'> print(contacts)
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²ΡΠ·ΠΎΠ² print()
Π²ΡΠ²Π΅Π΄Π΅Ρ Π½Π° ΡΠΊΡΠ°Π½ ΡΠ°ΠΊΠΎΠ΅:
('ΠΠΈΠΊΠΈΡΠΎΡΠΎΠ² ΠΠΌΠΈΡΡΠΈΠΉ ΠΠ½Π°ΡΠΎΠ»ΡΠ΅Π²ΠΈΡ', 'ΠΠΎΡΠΊΠ²Π°', '929-876-54-32')
Π’Π΅ΠΏΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΡ get_contacts
ΡΠΌΠΎΠΆΠ΅Ρ Π²Π΅ΡΠ½ΡΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π°Π½Π½ΡΡ
. ΠΡΠ΅ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Ρ Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΡΡΠ΅ΠΆ β tuple
.
Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ tuple
Π Π°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ tuple Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ divmod
. ΠΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π΄Π΅Π»Π΅Π½ΠΈΡ Ρ ΠΎΡΡΠ°ΡΠΊΠΎΠΌ:
divmod(100, 3) # Π²ΡΠ²Π΅Π΄Π΅Ρ (33, 1) divmod(2, 3) # Π²ΡΠ²Π΅Π΄Π΅Ρ (0, 2)
Π€ΡΠ½ΠΊΡΠΈΡ divmod
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΆ ΠΈΠ· Π΄Π²ΡΡ
ΡΠΈΡΠ΅Π» β ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈ ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ.
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ:
div_tuple = divmod(100, 3) print(div_tuple) # Π²ΡΠ²Π΅Π΄Π΅Ρ (33, 1)
ΠΠΎΠ±ΡΠ°ΡΡΡΡ Π΄ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π΄Π²ΡΡ ΡΠΈΡΠ΅Π» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ:
div_tuple = divmod(100, 3) print(div_tuple[0]) # Π²ΡΠ²Π΅Π΄Π΅Ρ 33 print(div_tuple[1]) # Π²ΡΠ²Π΅Π΄Π΅Ρ 1
ΠΠ½Π΄Π΅ΠΊΡΡ Π² ΠΊΠΎΠ΄Π΅ [0]
ΠΈ [1]
ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΎΠΆΠ½ΡΡΡ ΡΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π°Π²Π°ΡΡ Π³ΠΎΠ²ΠΎΡΡΡΠΈΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ:
div_tuple = divmod(100, 3) int_division = div_tuple[0] remainder = div_tuple[1] print(int_division) # Π²ΡΠ²Π΅Π΄Π΅Ρ 33 print(remainder) # Π²ΡΠ²Π΅Π΄Π΅Ρ 1
Π’Π°ΠΊΠΎΠΉ ΠΏΠ°ΡΡΠ΅ΡΠ½ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡΠΎ, ΡΡΠΎ Π² Python Π²Π²Π΅Π»ΠΈ ΡΠΏΡΠΎΡΠ΅Π½Π½ΡΡ ΠΊΠΎΡΠΎΡΠΊΡΡ Π·Π°ΠΏΠΈΡΡ:
(int_division, remainder) = divmod(100, 3) print(int_division) # Π²ΡΠ²Π΅Π΄Π΅Ρ 33 print(remainder) # Π²ΡΠ²Π΅Π΄Π΅Ρ 1
ΠΠ°ΠΏΠΈΡΡ ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠ° — ΡΠ΅ ΠΆΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΈ Π·Π°ΠΏΡΡΡΠ΅, Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠΎ Π² ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΡΠΎΡΠΎΠ½Ρ. ΠΠ°Π·ΡΠ²Π°Π΅ΡΡΡ «ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ».
ΠΡΠ»ΠΈ Π² ΠΊΠΎΡΡΠ΅ΠΆΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΡΠΎ ΡΠΊΠΎΠ±ΠΊΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ. Python Π»ΡΠ±ΠΈΡ ΡΠΈΡΡΡΠΉ ΠΊΠΎΠ΄:
int_division, remainder = divmod(100, 3) print(int_division) # Π²ΡΠ²Π΅Π΄Π΅Ρ 33 print(remainder) # Π²ΡΠ²Π΅Π΄Π΅Ρ 1
ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΠΎΡΠΌΠ° Π·Π°ΠΏΠΈΡΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π° ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
Π‘ΠΊΠΎΠ±ΠΊΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΈ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ°, Π½ΠΎ ΡΡΠΎΡ ΠΏΡΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ»ΠΎΠΆΠ½ΠΈΡΡ ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Π±ΡΠ΄ΡΡΠ΅ Ρ Π½ΠΈΠΌ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ:
contacts = full_name, city, phone_number
Π ΠΊΠΎΠ΄Π΅ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡΠΎΡΠΊΠ°Ρ Π·Π°ΠΏΠΈΡΡ:
return full_name, city, phone_number
ΠΡΠ·ΠΎΠ² return
ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ Python, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ ΠΈ Ρ
ΠΎΡΠ΅Ρ Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. Π Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ ΡΠΏΡΠ°Π²ΠΎ ΠΎΡ return
Π±ΡΠ΄Π΅Ρ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½ΠΎ Π² ΠΊΠΎΡΡΠ΅ΠΆ β tuple
.
Π‘ΡΡΠ»ΠΊΠΈ ΠΏΠΎ ΡΠ΅ΠΌΠ΅:
devman.org
ΠΡΠΎ Python — Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ — tuple (ΠΊΠΎΡΡΠ΅ΠΆ)
ΠΠΎΡΡΠ΅ΠΆ β Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Ρ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
ΠΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ ΠΌΠΎΠ³ΡΡ Π²ΡΡΡΡΠΏΠ°ΡΡ Π»ΡΠ±ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ.ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅
Π ΠΊΠΎΠ΄Π΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΊΠΎΠ±ΠΎΠΊ β
()
β Π²Π½ΡΡΡΠΈ ΡΠΊΠΎΠ±ΠΎΠΊ ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΡΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² Π½ΡΠΆΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΡΠ»ΠΈ ΠΊΠΎΡΡΠ΅ΠΆ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°.ΠΠΌΠ΅ΡΡΠ΅ Π² Π²Π²ΠΈΠ΄Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π·Π°ΠΏΡΡΡΡ Π² ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ.
my_empty_tuple = ()my_tuple = 1, 'some', 3.5 # ΡΠΎ ΠΆΠ΅, ΡΡΠΎ ΠΈ (1, 'some', 3.5)
my_tuple = 'a', # ΡΠΎ ΠΆΠ΅, ΡΡΠΎ ΠΈ ('a',)
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°
tuple()
, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Π²ΠΊΠ»ΡΡΠ°Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ). ΠΡΠ»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΠΊΠ°Π·Π°Π½ ΠΊΠΎΡΡΠ΅ΠΆ, ΡΠΎ ΠΎΠ½ ΠΈ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΡΠ½ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. tuple() # ()
tuple('abc') # ('a', 'b', 'c')
tuple([1, 2, 3]) # (1, 2, 3)
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅
ΠΠ²Π° ΠΊΠ°ΡΡΠ΅ΠΆΠ° ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΡΡ Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ: ΡΡΠΈΡΠ°ΡΡΡΡ ΡΠ°Π²Π½ΡΠΌΠΈ, Π΅ΡΠ»ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ Π΄Π»ΠΈΠ½Ρ ΠΈ ΡΠ°Π²Π½Ρ ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ:
a = (3, 2, 1)
b = (1, 2, 3)
d = (3, 2, 2)
e = (3, 2)
f = (3, 2, 'a')
a > b # True
a > d # False
d > b # True
a > e # True
# Python 3
a > f # TypeError: '>' not supported between instances of 'int' and 'str'
# Python 2
a > f # False
ΠΠ΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ CPython
ΠΡΡΡΠΎΠΉ ΠΊΠΎΡΡΠ΅ΠΆ β ΡΡΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠ΅ ΠΏΡΡΡΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ β ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ, Π° Π·Π½Π°ΡΠΈΡ ΠΈ Π°Π΄ΡΠ΅Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ Ρ ΡΠ°ΠΊΠΈΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ ΠΎΠ΄ΠΈΠ½.
a = ()
b = ()
a is b # True
id(a) == id(b) # True
ΠΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ del, ΠΈΠ»ΠΈ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ°) Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π΄Π»ΠΈΠ½Ρ (Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 19 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²), ΠΎΠ½ Π½Π΅ ΡΠ΄Π°Π»Π΅ΡΡΡ ΡΡΠ°Π·Ρ, Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ. ΠΡΠ° ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΈΠΌΠ΅Π΅Ρ 20 Π³ΡΡΠΏΠΏ, Π² ΠΊΠ°ΠΆΠ΄ΡΡ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ ΡΠ΄Π°Π»ΡΠ½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ Π΄Π»ΠΈΠ½Ρ, ΠΏΡΠΈΡΡΠΌ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ Π³ΡΡΠΏΠΏΠ΅ Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΏΡΡΡΠΎΠΉ ΠΊΠΎΡΡΠ΅ΠΆ.
tuple_0 = (1, 2, 3)
print('tuple_0 %s' % id(tuple_0)) # 140332152236648tuple_1 = (1, 2, 3)
print('tuple_1 %s' % id(tuple_1)) # 140332152236720
del tuple_1
# ΠΠ°Π»Π΅Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ° ΡΠΆΠ΅ ΠΏΡΠΎΡΠ»Π°.
# ΠΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ Π·Π° ΡΠ°Π±ΠΎΡΠΎΠΉ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ΅Π°Π½ΡΠ°
# ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°.
tuple_2 = (1, 2, 4)
print('tuple_2 %s' % id(tuple_2)) # 140332152236720
Π‘ΠΈΠ½ΠΎΠ½ΠΈΠΌΡ ΠΏΠΎΠΈΡΠΊΠ°: ΠΊΠΎΡΡΠ΅ΠΆ, ΠΊΠΎΡΡΠ΅ΠΆΠΈ, cortege, typle, ΡΡΠΏΠ»
pythonz.net
Python: ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΊΠΎΡΡΠ΅ΠΆΠ΅ — python
ΠΡ, ΠΊΠ°ΠΊ ΡΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ Trufa, Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ Π΅ΡΡΡ Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±Π° Π·Π°ΠΌΠ΅Π½Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΡΡΠ΅ΠΆΠ° Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ. ΠΠΈΠ±ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΊΠΎΡΡΠ΅ΠΆ Π² ΡΠΏΠΈΡΠΎΠΊ, Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ, Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ ΠΏΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΠΈ.
In [1]: def replace_at_index1(tup, ix, val):
...: lst = list(tup)
...: lst[ix] = val
...: return tuple(lst)
...:
In [2]: def replace_at_index2(tup, ix, val):
...: return tup[:ix] + (val,) + tup[ix+1:]
...:
ΠΡΠ°ΠΊ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π»ΡΡΡΠ΅, ΡΠΎ Π΅ΡΡΡ Π±ΡΡΡΡΠ΅Π΅?
ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΊΠΈΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ (Π½Π° Python 3.3) ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π±ΡΡΡΡΠ΅Π΅!
In [3]: d = tuple(range(10))
In [4]: %timeit replace_at_index1(d, 5, 99)
1000000 loops, best of 3: 872 ns per loop
In [5]: %timeit replace_at_index2(d, 5, 99)
1000000 loops, best of 3: 642 ns per loop
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ, ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° — ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ±:
In [6]: k = tuple(range(1000))
In [7]: %timeit replace_at_index1(k, 500, 99)
100000 loops, best of 3: 9.08 Β΅s per loop
In [8]: %timeit replace_at_index2(k, 500, 99)
100000 loops, best of 3: 10.1 Β΅s per loop
ΠΠ»Ρ ΠΎΡΠ΅Π½Ρ Π΄Π»ΠΈΠ½Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠΎΠ² Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΡΡΡΠ΅!
In [9]: m = tuple(range(1000000))
In [10]: %timeit replace_at_index1(m, 500000, 99)
10 loops, best of 3: 26.6 ms per loop
In [11]: %timeit replace_at_index2(m, 500000, 99)
10 loops, best of 3: 35.9 ms per loop
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. ΠΠ»Ρ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΏΠΈΡΠΊΠ° ΠΈΠ½Π΄Π΅ΠΊΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
In [12]: %timeit replace_at_index1(m, 900000, 99)
10 loops, best of 3: 26.6 ms per loop
In [13]: %timeit replace_at_index2(m, 900000, 99)
10 loops, best of 3: 49.2 ms per loop
ΠΡΠ°ΠΊ: Π΅ΡΠ»ΠΈ Π²Π°Ρ ΠΊΠΎΡΡΠ΅ΠΆ ΠΊΠΎΡΠΎΡΠΎΠΊ, Π½Π°ΡΠ΅ΠΆΡΡΠ΅ ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅. ΠΡΠ»ΠΈ ΠΎΠ½ Π΄Π»ΠΈΠ½Π½ΡΠΉ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ°!
qaru.site
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠ° Π² ΡΠΏΠΈΡΠΎΠΊ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Ru Python
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Ρ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π΄ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠΌ ΠΊΠ°ΡΡ Π΄Π»Ρ ΠΈΠ³ΡΡ Π² pygame, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ°ΡΡΡ ΠΏΠ»ΠΈΡΠΊΠΈ. Π£ΡΠΎΠ²Π΅Π½Ρ ΡΡΡΠΎΠΈΡΡΡ ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ² Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΠ΅ (Ρ ΠΎΡΡ ΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅):
Π³Π΄Π΅ Β«1Β» β ΡΡΠΎ Π±Π»ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΠ΅Π½Ρ, Π° Β«0Β» β ΡΡΠΎ Π±Π»ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΡΡΡΠΌ Π²ΠΎΠ·Π΄ΡΡ ΠΎΠΌ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ, ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° Π±Π»ΠΎΠΊΠ°:
ΠΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎΠ²Π΅Π½Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΊΠΎΡΡΠ΅ΠΆΠ΅, Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π½ΡΡ Π±Π»ΠΎΠΊΠΎΠ². ΠΠ°ΠΊ Ρ ΠΌΠΎΠ³Ρ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° ΡΡΠΎΠ²Π½Π΅?
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΊΠΎΡΡΠ΅ΠΆ Π² ΡΠΏΠΈΡΠΎΠΊ:
>>> t = ('my', 'name', 'is', 'mr', 'tuple') >>> t ('my', 'name', 'is', 'mr', 'tuple') >>> list(t) ['my', 'name', 'is', 'mr', 'tuple']
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π² ΠΊΠΎΡΡΠ΅ΠΆ:
>>> l = ['my', 'name', 'is', 'mr', 'list'] >>> l ['my', 'name', 'is', 'mr', 'list'] >>> tuple(l) ('my', 'name', 'is', 'mr', 'list')
Π£ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠΎΡΡΠ΅ΠΆ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ.
Π§ΡΠΎΠ±Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ Π² ΡΠΏΠΈΡΠΎΠΊ:
[list(i) for i in level] # list of lists
β ΠΠΠ β
map(list, level)
Π ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ:
tuple(tuple(i) for i in edited) # tuple of tuples
β ΠΠΠ β (Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ @jamylak)
tuple(itertools.imap(tuple, edited))
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² numpy:
>>> a = numpy.array(level1) >>> a array([[1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1]])
ΠΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ:
if clicked[0] == 1: x = (mousey + cameraY) // 60 # For readability y = (mousex + cameraX) // 60 # For readability a[x][y] = 1
Π£ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠΏΠΈΡΠΊΠΎΠ². ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠΏΠΈΡΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ:
level1 = [list(row) for row in level1]
ΠΈΠ»ΠΈ
level1 = map(list, level1)
ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ .
ΠΠΎ ΠΌΠ°ΡΡΠΈΠ² numpy Π±ΠΎΠ»Π΅Π΅ Ρ ΠΎΠ»ΠΎΠ΄Π½ΡΠΉ.
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ Π² ΡΠΏΠΈΡΠΎΠΊ
(ΠΠ°ΠΏΡΡΡΠ΅ ΠΎΡΡΡΡΡΡΠ²ΠΎΠ²Π°Π»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΡΡΠ΅ΠΆΠ°ΠΌΠΈ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π²ΠΎΠΏΡΠΎΡΠ΅, ΠΎΠ½ Π±ΡΠ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅)
Π‘ΠΏΠΎΡΠΎΠ± 1:
level1 = ( (1,1,1,1,1,1), (1,0,0,0,0,1), (1,0,0,0,0,1), (1,0,0,0,0,1), (1,0,0,0,0,1), (1,1,1,1,1,1)) level1 = [list(row) for row in level1] print(level1)
Π‘ΠΏΠΎΡΠΎΠ± 2:
level1 = map(list,level1) print(list(level1))
ΠΠ΅ΡΠΎΠ΄ 1 ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π» β 0.0019991397857666016 ΡΠ΅ΠΊΡΠ½Π΄ β
ΠΠ΅ΡΠΎΠ΄ 2 Π²Π·ΡΠ» β 0.0010001659393310547 ΡΠ΅ΠΊΡΠ½Π΄ β
ΠΠΎΡΠ΅ΠΌΡ Π±Ρ Π²Π°ΠΌ Π½Π΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠΏ ΠΈΠ· ΠΊΠΎΡΡΠ΅ΠΆΠ° Π² ΡΠΏΠΈΡΠΎΠΊ ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ.
level1 = ( (1,1,1,1,1,1) (1,0,0,0,0,1) (1,0,0,0,0,1) (1,0,0,0,0,1) (1,0,0,0,0,1) (1,1,1,1,1,1)) print(level1) level1 = list(level1) print(level1) level1 = tuple(level1) print(level1)
ΠΠ±Π° ΠΎΡΠ²Π΅ΡΠ° Ρ ΠΎΡΠΎΡΠΈ, Π½ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΎΠ²Π΅Ρ:
ΠΠΎΡΡΠ΅ΠΆΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ. ΠΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ, Π»ΡΡΡΠ΅ Ρ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠΏΠΈΡΠΊΠ΅, ΡΡΠΎ ΡΠΌΠ΅Π½ΡΡΠΈΡ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ.
Π Π²Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠ·Π²Π»Π΅ΠΊΠΈΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠΏΠΈΡΠΎΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ eumiro, ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ, ΠΊΠ°ΠΊ ΠΎΡΠ²Π΅Ρ, Π΄Π°Π½Π½ΡΠΉ Π¨ΠΊΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠΌ.
Π’Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² numpy, ΡΡΠΎ Π»ΡΡΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ
ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ, Π΅ΡΠ»ΠΈ Π±Ρ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΈΡΠΎΠΊ, Π° Π½Π΅ ΡΠΏΠΈΡΠΎΠΊ ΡΠΏΠΈΡΠΊΠΎΠ². ΠΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ Π²ΡΠ΅ Π²Π°ΡΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠΈ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ (ΡΡΠΎ Π²Π΅ΡΠ½ΠΎ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ ΡΡΠΎ).
WIDTH = 6 level1 = [ 1,1,1,1,1,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,1,1,1,1,1 ] print level1[x + y*WIDTH] # print value at (x,y)
Π Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π±ΡΡΡ Π΅ΡΠ΅ Π±ΡΡΡΡΠ΅Π΅, Π΅ΡΠ»ΠΈ Π±Ρ Π²ΠΌΠ΅ΡΡΠΎ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΏΠΈΡΠΊΠ°:
WIDTH = 8 # better align your width to bytes, eases things later level1 = 0xFC84848484FC # bit field representation of the level print "1" if level1 & mask(x, y) else "0" # print bit at (x, y) level1 |= mask(x, y) # set bit at (x, y) level1 &= ~mask(x, y) # clear bit at (x, y)
Ρ
def mask(x, y): return 1 << (WIDTH-x + y*WIDTH)
ΠΠΎ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π²Π°ΡΠΈ ΠΏΠΎΠ»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠΎΠ»ΡΠΊΠΎ 0 ΠΈΠ»ΠΈ 1. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ
www.rupython.com