Очень часто в python можно встретить условия состоящие из оператора if и имени переменной. Например такое:
if lst: # <-------
pass
Что то значит и как этим пользоваться?
В python есть что-то похожее на концепцию пустоты. Переменные могут быть пустыми – для чисел пустота это значение ноль, для строк – пустая строка, для множеств, списков и словарей – соотвественно пустые множества, списки и словари. Есть даже специальное значение None, которое обозначает абсолютную пустоту. В то время как пустая строка остается строкой, а пустое множество – множеством, None не имеет никакого типа и является буквально ничем.
Именно это свойство позволяет нам вместо сравнения:
if string != '':
pass
использовать более простой вариант:
if string:
pass
Таким образом мы проверяем не пуст ли объект и выполняем действие, если в нем что-то есть. Можно написать и обратую проверку
if not string:
pass
Такой код выполнит действие только если строка будет пустой.
Этот прием прекрасно работает и с циклами:
lst = [1, 2, 3, 4]
while lst:
print(lst.pop(0))
Само значение None удобно использовать в качестве начального значения, которое очень удобно проверить на пустоту:
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)
Данный код будет разбивать строки на слова, пока не встретит пустую строку. Для каждой строки он будет выводить пару слов начиная с пары “первое-второе” и заканчивая парой “предпоследнее-последнее”.