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))

其中项目multi出现两次TrueFalse,而其他出现None.

4

1 回答 1

2

您可以使用嵌套循环并根据成员资格测试选择一个或另一个可迭代对象:

((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 回答