EasyPython🐍
67 subscribers
590 photos
4 links
ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈ ΠΏΠΎ Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ упростят Π²Π°ΠΌ Тизнь.
Download Telegram
Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ β€œEnumerate” Для элСгантного ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° списков

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

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Π½Π° Python, Π½ΠΎ my_list[i] каТСтся Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ нСумСстным, особСнно ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·.

Π Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ питоновский способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ enumerate() для получСния ΠΊΠ°ΠΊ индСкса, Ρ‚Π°ΠΊ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.
Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… списков

ΠœΠ΅Ρ‚ΠΎΠ΄ append() ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ списками, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с простыми.

Π˜Ρ‚Π°ΠΊ, Ρƒ нас Π±Ρ‹Π» список nested_list, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ Π΄Π²Π° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… списка [[1, 2], [3, 4]].

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ список добавляСтся Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ список ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ элСмСнт.
Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ условия

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ условиС для использования append(). Если условиС выполняСтся ΠΈΠ»ΠΈ Ссли условия Π½Π΅Ρ‚, append() добавляСт элСмСнт Π² ΠΊΠΎΠ½Π΅Ρ† списка. Всё ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Ссли temp большС 25, Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ append() добавляСт элСмСнты Π² ΠΊΠΎΠ½Π΅Ρ† списка numbers. Π’ нашСм случаС, это 30 ΠΈ 27.
Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Ρ‚ΠΎΠΆΠ΅ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ

map() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Β«Π΄ΠΎΡ‡Π΅Ρ€Π½ΡŽΡŽΒ» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π° любом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅, Π³Π΄Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Ρ†ΠΈΠΊΠ» for. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π΅ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, Π΄Π°ΠΆΠ΅ ΠΊ strings.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ всС Π±ΡƒΠΊΠ²Ρ‹ Π² Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅.
Get Method для словаря

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ скобки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· словаря. Но сСйчас рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Get method.

ΠŸΡ€ΠΈ использовании ΠΌΠ΅Ρ‚ΠΎΠ΄Π° скобок выдаСтся ошибка, Ссли ΠΊΠ»ΡŽΡ‡ отсутствуСт. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Get method Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ β€œNone” .
ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ append() ΠΎΡ‚ extend()

ΠœΠ΅Ρ‚ΠΎΠ΄ extend() Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для добавлСния элСмСнтов Π² список, Π½ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ append(), ΠΎΠ½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Ρ€ΡƒΠ³ΠΎΠΉ список) ΠΈ добавляСт Π΅Π³ΠΎ элСмСнты ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠ΅Ρ‚ΠΎΠ΄ extend() ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ содСрТимоС Π΄Π²ΡƒΡ… списков, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ append() просто добавляСт Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт Π² ΠΊΠΎΠ½Π΅Ρ† списка.

Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ append() добавляСт ΠΎΠ΄ΠΈΠ½ элСмСнт, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ extend() добавляСт всС элСмСнты ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ списка ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎ.
ΠšΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡ списков с использованиСм append()

Когда ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ append() с Π΄Ρ€ΡƒΠ³ΠΈΠΌ списком, происходит Π½Π΅ конкатСнация (слияниС) списков Π² ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ, Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ списка ΠΊΠ°ΠΊ элСмСнта Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ список.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ этого ΠΊΠΎΠ΄Π° β€” list1 = [1, 2, 3, [4, 5, 6]]. Π’Π΅ΠΏΠ΅Ρ€ΡŒ list2 стал элСмСнтом послСднСго элСмСнта списка list1.
ВранспонированиС 2d-массива

Π­Ρ‚ΠΎΡ‚ Π»Π°ΠΉΡ„Ρ…Π°ΠΊ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ транспонированиС 2d-массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° zip.
map() + лямбды

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мэппинг с бСзымянными функциями, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄ стал Π΅Ρ‰Π΅ ΠΊΠΎΡ€ΠΎΡ‡Π΅.

ВозвСдя всС элСмСнты списка ls Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.
self() для обращСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊ сСбС

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС self позволяСт ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ элСмСнты списка Π½Π° 2.
Π—Π°Π³ΠΎΠ½ΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°

БотрудничСство map(), input() ΠΈ list() ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ вСсь ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ тСкст Π² список. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ расчСтС ΡΠΌΠΎΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ окраски тСкста, вСдь слова прСдстоит ΠΏΠΎΡ‚ΠΎΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΊ исходной Ρ„ΠΎΡ€ΠΌΠ΅
НСдостатки map()

К нСдостаткам map(), Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² случаС с filter(), ΠΌΠΎΠΆΠ½ΠΎ отнСсти Β«Π»Π΅Π½ΠΈΠ²ΡƒΡŽ ΠΎΡ†Π΅Π½ΠΊΡƒΒ» (Lazy Evaluation). Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΠΈ языка сдСлали Π½Π΅ΠΌΠ°Π»ΠΎ Π² 3-ΠΉ вСрсии, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ языка, ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ вмСсто ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π°ΠΌ возвращаСтся ссылка Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€. Пока ΠΌΡ‹ Π½Π΅ ΠΎΠ±Π΅Ρ€Π½Π΅ΠΌ Π΅Π΅ Π² list() ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ-Π΄ΠΎΡ‡ΠΊΠΎΠΉ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π°.

Π­Ρ‚ΠΎ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Π½Π° ΠΌΠ°Π»Ρ‹Ρ… ΠΎΠ±ΠΎΡ€ΠΎΡ‚Π°Ρ…, Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, Π³Π΄Π΅ Π΄Π°Π½Π½Ρ‹Π΅ вСсьма Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹, Π±Π΅Π· просмотра Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ошибок Π½Π° ΠΏΡ€ΠΎΠ΄Π΅ увСличиваСтся: ΠΌΡ‹ просто Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.
РасчСт Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ β€œΡ‚Ρ€ΡŽΠΊβ€ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ time-ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ, сколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ трСбуСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ для выполнСния ΠΊΠΎΠ΄Π°.
Классика: Zen of Python ΠΎΡ‚ Π’ΠΈΠΌΠ° ΠŸΠΈΡ‚Π΅Ρ€ΡΠ°

Zen of Python β€” 19 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² программирования Π½Π° Python, написанныС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ Π’ΠΈΠΌΠΎΠΌ ΠŸΠΈΡ‚Π΅Ρ€ΡΠΎΠΌ. И СдинствСнная «пасхалка», ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π² РуководствС.
ΠœΡ‹ΡΠ»ΠΈ ΠΎ любви

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊΠΈΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ΄, Python Π»ΡŽΠ±ΠΈΡ‚ ΠΏΠΎΡ€Π°ΡΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ ΠΈ ΠΎ любви (ΠΈ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ любовь β€” это любовь, Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚Π°ΠΌ Π΅Ρ‰Π΅).
ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ индСкс

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ с послСднСго Π·Π½Π°ΠΊΠ°, Ρ‚ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ индСксом.
Π₯эши

Π₯Сш β€” фиксированноС Ρ†Π΅Π»ΠΎΠ΅ число, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ. МоТно Π»ΠΈ Π½Π°ΠΉΡ‚ΠΈ Ρ…Π΅Ρˆ бСсконСчности ΠΈΠ»ΠΈ NaN? Π’ Python Π΄Π°.
Π’ΠΈΠΏΡ‹ Π½Π΅ для слабонСрвных

Если ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ справку для types.CodeType, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° эту Ρ‚Π΅ΠΌΡƒ Π΄ΡƒΠΌΠ°Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ языка.