Более короткий способ проверить истинность в выражении понимания списка 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
  • Python: TypeError: объект 'tuple' не поддерживает назначение элемента
  • Где находится путь python, когда у меня нет .bash_profile?
  • python обрезает текст вокруг ключевого слова
  • Как получить вчера в python
  • Python - импортировать пакет в модуль, находящийся внутри одного пакета
  • Как создать новый auth_user и auth_group на Web2py, запущенном в Google App Engine (GAE)?
  • Как проверить, содержит ли файл простой текст?
  • Python - лучший язык программирования в мире.