Проверка на пустоту

Очень часто в python можно встретить условия состоящие из оператора if и имени переменной. Например такое:

Python
if lst:  # <-------
    pass

Что то значит и как этим пользоваться?

В python есть что-то похожее на концепцию пустоты. Переменные могут быть пустыми – для чисел пустота это значение ноль, для строк – пустая строка, для множеств, списков и словарей – соотвественно пустые множества, списки и словари. Есть даже специальное значение None, которое обозначает абсолютную пустоту. В то время как пустая строка остается строкой, а пустое множество – множеством, None не имеет никакого типа и является буквально ничем.

Именно это свойство позволяет нам вместо сравнения:

Python
if string != '':
  pass

использовать более простой вариант:

Python
if string:
  pass

Таким образом мы проверяем не пуст ли объект и выполняем действие, если в нем что-то есть. Можно написать и обратую проверку

Python
if not string:
  pass

Такой код выполнит действие только если строка будет пустой.

Этот прием прекрасно работает и с циклами:

Python
lst = [1, 2, 3, 4]

while lst:
    print(lst.pop(0))

Само значение None удобно использовать в качестве начального значения, которое очень удобно проверить на пустоту:

Python
while lst := input().split():
    item = last_item  = None
    for something in lst:
        if item:
            last_item = item
        item = something
        if last_item:
            print(last_item, item)

Данный код будет разбивать строки на слова, пока не встретит пустую строку. Для каждой строки он будет выводить пару слов начиная с пары “первое-второе” и заканчивая парой “предпоследнее-последнее”.

Подписаться
Уведомить о
guest
1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии