是否有一个Python等效于Stream.findAny()?

时间:2016-11-04 11:22:07

标签: python-3.x hash iterator java-stream

我想找到给定哈希值的消息。为此,我想迭代ascii小写和数字的所有可能的n长度排列的集合,并检查置换的散列是否等于给定的散列值。

问题:由于空间复杂度为O(36 ^ n),因此预先计算集合是不可行的。

想法:在Java中,我会创建一个生成这些排列的Stream,并在应用过滤器后使用findAny()。由于惰性评估,无需提前计算所有可能的排列。

问题:Python中是否存在一些模仿此行为的等效内容?我想itertools可以调整为这样工作,但我不确定。

欣赏任何反馈意见!

1 个答案:

答案 0 :(得分:0)

您正在寻找发电机: https://wiki.python.org/moin/Generators

def foo(n):
    num = 0
    while num < n:
        yield num
        num += 1

f = foo(5)
print f.next() // 0
print f.next() // 1
print f.next() // 2

在此示例中,每次调用f.next()都会计算并返回下一个值。

您可以考虑收益返回值并等待另一个next调用。