【发布时间】:2013-08-03 01:58:45
【问题描述】:
案例:我需要找出三个对象组合是否满足一个规则。
为了简单起见,假设如果给定序列是由生成器函数吐出的项目的任意组合,则该规则得到满足。生成器会处理池中的哪些项目将在其每个实例中弹出,并且不会总是产生相同的项目/订单,因此构建项目列表并使用 itertools.combinations 之类的东西来生成组合是行不通的。
现在我有一个相当于:
def is_match_found(sequence):
items1 = items_generator()
for item1 in items1:
items2 = items_generator()
for item2 in items2:
items3 = items_generator()
for item3 in items3:
if sequence in [item1, item2, item3]:
return True
return False
但我预见到未来我需要查看生成器吐出的n 对象的组合是否满足规则。
我觉得一个带有 n 参数的函数实现递归 for 循环可能是解决这个问题的一步,但是当我试图纠正一个有效的问题时,我的大脑崩溃了。
有人能指出正确的方向吗?
【问题讨论】:
-
您是在寻找
itertools.product,还是我在这里遗漏了什么? -
似乎是适合这项工作的工具,我会在电脑前尝试一下。谢谢!