Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 是否存在与Stream.findAny()等效的Python?_Python 3.x_Hash_Iterator_Java Stream - Fatal编程技术网

Python 3.x 是否存在与Stream.findAny()等效的Python?

Python 3.x 是否存在与Stream.findAny()等效的Python?,python-3.x,hash,iterator,java-stream,Python 3.x,Hash,Iterator,Java Stream,我想找到给定哈希值的消息。为此,我想迭代ascii小写和数字的所有可能的n长度排列的集合,并检查排列的散列是否等于给定的散列值 问题:由于空间复杂度为O(36^n),预先计算集合是不可行的 Idea:在Java中,我会创建一个产生这些排列的流,并在应用过滤器后使用findAny()。由于延迟计算,不需要预先计算所有可能的排列 问题:Python中是否有类似的行为?我想itertools可以调整成这样,但我不确定 感谢任何形式的反馈 发电机就是您要寻找的: def foo(n): num=0 当

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

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

Idea:在Java中,我会创建一个产生这些排列的流,并在应用过滤器后使用findAny()。由于延迟计算,不需要预先计算所有可能的排列

问题:Python中是否有类似的行为?我想itertools可以调整成这样,但我不确定


感谢任何形式的反馈

发电机就是您要寻找的:

def foo(n):
num=0
当num
在本例中,对f.next()的每次调用都会计算并返回下一个值


您可以将其视为yield返回一个值,然后等待下一次调用。

生成器是您需要的:

def foo(n):
num=0
当num
在本例中,对f.next()的每次调用都会计算并返回下一个值


您可以将其视为yield返回一个值,然后等待下一个
调用。

是的,您可以使用itertools执行此操作,它有一个置换生成器doesn't permutations()生成一个完整大小的数组?是的,您可以使用itertools执行此操作,它有一个置换生成器doesn't permutations()生成完整大小的数组?我只是不确定next()函数如何处理字符串。我以为生成器更适合整数?不,你可以返回你想要的任何东西。甚至每次都使用不同类型的对象。我只是不确定next()函数如何处理字符串。我以为生成器更适合整数?不,你可以返回你想要的任何东西。即使是每次使用不同类型的对象。
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