#python python... PYTHON πŸ”› πŸš€
11 subscribers
919 photos
7 videos
158 files
1.54K links
Download Telegram
Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ вмСсто True ΠΈ False β€” truthy ΠΈ falsy значСния Π² Python

Π’ Python, ΠΊΠ°ΠΊ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках, Π΅ΡΡ‚ΡŒ логичСский Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… bool, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ всСго Π΄Π²Π° значСния: True (истина) ΠΈ False (лоТь).
Π˜Ρ… ΠΌΡ‹ ΠΈ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Π² сСгодняшнСй ΡΡ‚Π°Ρ‚ΡŒΠ΅.
ИзмСнСниС списка Π²ΠΎ врСмя ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π½Π΅ΠΌΡƒ

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

odd = lambda x: bool(x % 2) # функция ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ числа Π½Π° Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΡΡ‚ΡŒ

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for i in range(10):
  if odd(numbers[i]):
    del numbers[i] # ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΈΠ· списка Π²ΠΎ врСмя ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π½Π΅ΠΌΡƒ

# Output:
Traceback (most recent call last):
if odd(numbers[i]):
IndexError: list index out of range

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΈΠ· списка Π²ΠΎ врСмя Π΅Π³ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ – это ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, которая Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстна Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ.

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Python Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ряд элСгантных ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌ программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ использовании ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΡŽ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°. Одна ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌ – list comprehensions. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ списков часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ рСализация ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅:

odd = lambda x: bool(x % 2) # функция ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ числа Π½Π° Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΡΡ‚ΡŒ
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

numbers = [n for n in numbers if not odd(n)] # Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π½ΠΎΠ²ΠΎΠ³ΠΎ списка
print(numbers)

# Output:
[2, 4, 6, 8, 10]
ИзмСнСниС списка Π²ΠΎ врСмя ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π½Π΅ΠΌΡƒ

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

odd = lambda x: bool(x % 2) # функция ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ числа Π½Π° Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΡΡ‚ΡŒ

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for i in range(10):
  if odd(numbers[i]):
    del numbers[i] # ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΈΠ· списка Π²ΠΎ врСмя ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π½Π΅ΠΌΡƒ

# Output:
Traceback (most recent call last):
if odd(numbers[i]):
IndexError: list index out of range

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΈΠ· списка Π²ΠΎ врСмя Π΅Π³ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ – это ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, которая Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстна Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ.

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Python Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ряд элСгантных ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌ программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ использовании ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΡŽ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°. Одна ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌ – list comprehensions. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ списков часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ рСализация ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅:

odd = lambda x: bool(x % 2) # функция ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ числа Π½Π° Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΡΡ‚ΡŒ
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

numbers = [n for n in numbers if not odd(n)] # Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π½ΠΎΠ²ΠΎΠ³ΠΎ списка
print(numbers)

# Output:
[2, 4, 6, 8, 10]
Forwarded from Python Academy
ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° истинности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Π½Π° ΠΈΡΡ‚ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² классов Π² python3 Π΅ΡΡ‚ΡŒ "магичСский" ΠΌΠ΅Ρ‚ΠΎΠ΄ __bool__(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½Π° Π·Π°ΠΌΠ΅Π½Ρƒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΌΡƒ __nonzero__() Π² python2.

Если Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² классС, Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° ΠΈΡΡ‚ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ Π° Ρ‚Π°ΠΊΠΆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ bool(). ΠœΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ False ΠΈΠ»ΠΈ True.

Если __bool__() Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ __len__(), Ссли ΠΎΠ½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, ΠΈ, соотвСтствСнно, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ истинным, Ссли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ __len__() Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ. Если Π² классС Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π½ΠΈ __len__(), Π½ΠΈ __bool__(), всС Π΅Π³ΠΎ экзСмпляры Π±ΡƒΠ΄ΡƒΡ‚ истинными.

#magic #__bool__
Подсказки ΠΏΠΎ Ρ‚ΠΈΠΏΠ°ΠΌ Python - ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ всСгда истинной логичСской ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Mypy.

Иногда ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ логичСскиС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ истинными. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ ошибки Π»ΠΈΠ±ΠΎ Π² подсказках Ρ‚ΠΈΠΏΠ°, Π»ΠΈΠ±ΠΎ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π£ Mypy Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ΅ логичСскоС использованиС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ΄Π° ошибки truthy-book.

Π§ΠΈΡ‚Π°Ρ‚ΡŒ
πŸ€” КакиС Π΅ΡΡ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Python?

Π’ Python сущСствуСт нСсколько встроСнных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…: числовыС Ρ‚ΠΈΠΏΡ‹ (int, float, complex), строки (str), Π±ΡƒΠ»Π΅Π²Ρ‹ значСния (bool), списки (list), ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ (tuple), мноТСства (set) ΠΈ словари (dict). Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ bytes ΠΈ bytearray. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ классов. Python ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ, Π³Π΄Π΅ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ опрСдСляСтся автоматичСски ΠΏΡ€ΠΈ присваивании значСния.

Π‘Ρ‚Π°Π²ΡŒ πŸ‘ Ссли Π·Π½Π°Π» ΠΎΡ‚Π²Π΅Ρ‚, πŸ”₯ Ссли Π½Π΅Ρ‚
Π—Π°Π±ΠΈΡ€Π°ΠΉ πŸ“šΠ‘Π°Π·Ρƒ Π—Π½Π°Π½ΠΈΠΉ
Please open Telegram to view this post
VIEW IN TELEGRAM