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

问题描述 投票:0回答:1

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

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

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

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

感谢任何反馈!

python-3.x hash iterator java-stream
1个回答
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调用。

© www.soinside.com 2019 - 2024. All rights reserved.