可以写短一点吗?我最感兴趣的是不要写r[0].value
两次。替代品必须更短。
(r[0].value for r in sheet.range(USERROLELIST) if r[0].value)
if r[0].value
-- 检查它!= 无
sheet.range
来自 openpyxl 模块。
可以写短一点吗?我最感兴趣的是不要写r[0].value
两次。替代品必须更短。
(r[0].value for r in sheet.range(USERROLELIST) if r[0].value)
if r[0].value
-- 检查它!= 无
sheet.range
来自 openpyxl 模块。
像这样做:
(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)
这是另一种编写方式,但是我更喜欢您提供的代码
filter(None, (r[0].value for r in sheet.range(USERROLELIST)))
import itertools
gen = itertools.ifilter(lambda x: x[0].value, sheet.range(USERROLELIST))
#later...
for i in gen:
# do something with i
此方法减少临时复制开销