我正在尝试生成一个长度为r的Vigenere密码密钥的懒惰的iterable集合。我知道itertools
和{}方法。但是,这将生成诸如ABCD
、ABCE
、ABCF
等键。。。但它永远不会像AABC
那样做。在
因此,基本上,我需要元组或字符串的字符不重复(也就是说,一个重复的键可以被切成两半,得到两个相同的一半),但可以包含重复的字符。很好的例子:AABABA
,而不是AABAAB
。在
我怎么能创建这样一个集合,它不会像这样生成键,并且是惰性迭代的,这样当我想探索长度超过3个字符的键时,就不会破坏内存了?在
Tags:
听起来你想用
itertools.combinations_with_replacement()
。除此之外,你可以写一个生成器来过滤掉你不想要的。在http://docs.python.org/library/itertools.html#itertools.combinations_with_replacement
编辑:通过@PetrViktorin修复
相关问题 更多 >
编程相关推荐