首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >适当时退出itertool.product循环

适当时退出itertool.product循环
EN

Stack Overflow用户
提问于 2016-11-08 16:28:01
回答 1查看 49关注 0票数 1
代码语言:javascript
运行
复制
printable = '0123456789abcdefghijklmnopqrstuvwxyz'

unknown = "abcd"

[''.join(i) for i in itertools.product(printable, repeat = 4)]

我试图找到一种方法,将一些东西嵌入到迭代工具行中,这样做如下:

代码语言:javascript
运行
复制
if i == unknown:
    print("the unknown was", i)

那就打破循环。这样做的理由是,我想有能力搜索更长的单词,而不需要填补记忆。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-08 16:56:04

清单理解并不是真正意义上的这个任务--它们是用来创建列表的!

看起来你想要这样的东西:

代码语言:javascript
运行
复制
printable = '0123456789abcdefghijklmnopqrstuvwxyz'
unknown = "abcd"

for i in itertools.product(printable, repeat = 4):
    guess = ''.join(i) 
    if guess == unknown:
        print("the unknown was", i)
        break

但是,如果仍然需要一行程序,则可以使用生成器表达式。生成器表达式与列表理解完全一样,只是它们不存储下一个元素。我们可以像使用列表一样使用它们,也可以用next(gen)获取下一个元素。

代码语言:javascript
运行
复制
printable = '0123456789abcdefghijklmnopqrstuvwxyz'
unknown = "abcd"

correct = next(''.join(i) for i in itertools.product(printable, repeat = 4) if ''.join(i) == unknown)
print("the unknown was", correct)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40491929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档