Более короткий способ проверить истинность в выражении понимания списка Python?

Можно ли написать его короче? Меня больше всего интересует не запись r[0].value дважды . Альтернатива должна быть короче .

 (r[0].value for r in sheet.range(USERROLELIST) if r[0].value) 

if r[0].value – проверить, что это! = None

sheet.range – из модуля openpyxl.

3 Solutions collect form web for “Более короткий способ проверить истинность в выражении понимания списка Python?”

Вот еще один способ его написания, однако я предпочитаю код, который вы указали

 filter(None, (r[0].value for r in sheet.range(USERROLELIST))) 

Делай это так:

 (r for r in (R[0].value for R in sheet.range(USERROLELIST)) if r) 

Если вы действительно хотите сделать вещи с «наименьшим количеством символов»,

Вы можете попробовать что-то вроде этого:

Прежде всего, импортируйте свои модули с более короткими именами …

 from openpyxl import sheet sr = sheet.range 

Во-вторых, имеют более короткие имена переменных:

 L = USERROLELIST 

Наконец, удалите лишние пробелы:

 (r for r in(R[0].value for R in sr(L))if r) 
 import itertools gen = itertools.ifilter(lambda x: x[0].value, sheet.range(USERROLELIST)) #later... for i in gen: # do something with i 

Этот метод уменьшает накладные расходы на временную копию

  • Преобразование списков в «транспонированный» список
  • Последняя итерация Python для цикла
  • Случайный случай использования Lambda
  • Как получить номер версии модуля python через код?
  • ValueError: символ неподдерживаемого формата '
  • Получить путь к выбранным файлам в проводнике Windows с помощью python
  • python с использованием последовательности фибоначчи
  • Python: печать списков сбоку
  • Преобразовать двоичную строку базы-2 в int
  • Обновить объект движка приложения
  • Как подсчитать строки комментариев и пустые строки исходного кода Java с помощью Python?
  • Python - лучший язык программирования в мире.