python - 哪个 itertools 生成器不会跳过任何组合?

标签 python python-itertools

<分区>

当我运行这段代码时,我没有得到 3 个字符的所有可能组合:

def comb(iterable, r):
    pool = tuple(iterable)
    n = len(pool)
    for indices in permutations(range(n), r):
        if sorted(indices) == list(indices):
            yield tuple(pool[i] for i in indices)
def start():
    for x in comb("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ12234567890!@#$%^&*?,()-=+[]/;",3):
        print x

相反,它会跳过一些。当我重复字符 3 次时,我得到了我需要的所有组合,但我得到了多次。这需要三倍的时间,这不是我想要的。我将计算数百万种组合,因此我需要知道重复字符的替代方法。

最佳答案

您正在寻找 itertools.product(characters, repeat = 3)

参见 itertools.product文档。

>>> ' '.join(''.join(x) for x in itertools.product('abcd', repeat = 2))
aa ab ac ad ba bb bc bd ca cb cc cd da db dc dd

关于python - 哪个 itertools 生成器不会跳过任何组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10234599/

相关文章:

具有绑定(bind)值的 python itertools 排列

python - 如何在 itertools.accumulate 中定义自己的 func 参数?

python - 使用 openCV 识别 HSV 中的颜色范围

python - 在Python中使用itertools帮助有效地获取矩阵的元素

python - django模型的对象声明在哪里?

python - 使用python玩游戏时如何获取键盘输入的字符?

python - 在Python中将列表动态分解为变量

python - 使用 itertools 创建 numpy 数组

python - 使用 python 为 action server 解析电子邮件

python - 无法运行远大前程快速入门