0

もっと短く書くことは可能ですか?私は二度書かないことr[0].valueに主に興味があります。代替は短くする必要があります

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

if r[0].value-- != None であることを確認します

sheet.rangeopenpyxl モジュールからのものです。

4

3 に答える 3

2

次のようにします。

(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)
于 2013-05-28T10:03:03.780 に答える
1

これは別の書き方ですが、私はあなたが与えたコードをはるかに好みます

filter(None, (r[0].value for r in sheet.range(USERROLELIST)))
于 2013-05-28T10:00:47.070 に答える
1
import itertools
gen = itertools.ifilter(lambda x: x[0].value, sheet.range(USERROLELIST))

#later...
for i in gen:
    # do something with i

この方法により、一時コピーのオーバーヘッドが削減されます

于 2013-05-28T10:04:09.467 に答える