0

与えられた:

foo = (a,b,c,d,e,f)
multi = (b,d)

次のタプルを生成するジェネレータ内包表記は次のとおりです。

((a, None),
(b, True),
(b, False),
(c, None),
(d, True),
(d, False),
(e, None),
(f, None))

の項目はと でmulti2 回表示さTrueFalse、他の項目は で表示されNoneます。

4

1 に答える 1

2

ネストされたループを使用して、メンバーシップ テストに基づいていずれかの iterable を選択できます。

((v, other) for v in foo for other in ((True, False) if v in multi else (None,)))

上記のネストされたforループ バージョンは次のとおりです。

def gen():
    for v in foo:
        iterable = (True, False) if v in multi else (None,)
        for other in iterable:
            yield (v, other)
于 2014-09-18T13:13:06.787 に答える