printable = '0123456789abcdefghijklmnopqrstuvwxyz'
unknown = "abcd"
[''.join(i) for i in itertools.product(printable, repeat = 4)]
我试图找到一种方法,将一些东西嵌入到迭代工具行中,这样做如下:
if i == unknown:
print("the unknown was", i)
那就打破循环。这样做的理由是,我想有能力搜索更长的单词,而不需要填补记忆。
发布于 2016-11-08 16:56:04
清单理解并不是真正意义上的这个任务--它们是用来创建列表的!
看起来你想要这样的东西:
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)
获取下一个元素。
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)
https://stackoverflow.com/questions/40491929
复制相似问题