もっと短く書くことは可能ですか?私は二度書かないことr[0].value
に主に興味があります。代替は短くする必要があります。
(r[0].value for r in sheet.range(USERROLELIST) if r[0].value)
if r[0].value
-- != None であることを確認します
sheet.range
openpyxl モジュールからのものです。
もっと短く書くことは可能ですか?私は二度書かないことr[0].value
に主に興味があります。代替は短くする必要があります。
(r[0].value for r in sheet.range(USERROLELIST) if r[0].value)
if r[0].value
-- != None であることを確認します
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
この方法により、一時コピーのオーバーヘッドが削減されます