如何在python中为itertools.product动态分配参数

用户名

我正在尝试找出如何传递itertools.product动态数量的参数。

我有以下代码,可以按预期方式打印出行,每行以不同的顺序包含4个字符:

#!/usr/bin/env python3.5
import sys, itertools, multiprocessing, functools

alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ12234567890!@#$%^&*?,()-=+[]/;"
num_parts = 4
part_size = len(alphabet) // num_parts

def do_job(first_bits):
    for x in itertools.product(first_bits, alphabet, alphabet, alphabet):
        print(''.join(x))

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=4)
    results = []

    for i in range(num_parts):
        if i == num_parts - 1:
            first_bit = alphabet[part_size * i :]
        else:
            first_bit = alphabet[part_size * i : part_size * (i+1)]
        pool.apply_async(do_job, (first_bit,))

    pool.close()
    pool.join()

然后,我尝试使用以下代码使其完全动态,其中基于num_parts变量动态创建字母参数的数量:

#!/usr/bin/env python3.5
import sys, itertools, multiprocessing, functools

alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ12234567890!@#$%^&*?,()-=+[]/;"
num_parts = 4
part_size = len(alphabet) // num_parts
dynamicArgs = []

def do_job(first_bits):
    for x in itertools.product(first_bits, *dynamicArgs):
        print(''.join(x))

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=4)
    results = []
    for x in range(num_parts-1):
        dynamicArgs.append(alphabet)

    for i in range(num_parts):
        if i == num_parts - 1:
            first_bit = alphabet[part_size * i :]
        else:
            first_bit = alphabet[part_size * i : part_size * (i+1)]
        pool.apply_async(do_job, (first_bit,))

    pool.close()
    pool.join()

但这不能按预期方式工作……它输出每行只有一个字符的行,并且仅在字母表上进行一次迭代。

如何将动态数量的字母变量作为参数传递给itertools.product?

谢谢你的时间。

帕德拉克·坎宁安(Padraic Cunningham)

您可以只将字符串列表相乘:

 def do_job(first_bits):

    for x in itertools.product(first_bits, *[alphabet] * 3):

您还可以使用itertools.repeat

from itertools import repeat
def do_job(first_bits, times):
    for x in itertools.product(first_bits, *repeat(alphabet, times)):

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在python中为itertools.product动态分配参数

来自分类Dev

如何动态分配参数值

来自分类Dev

mongodb:使用参数在新字段中动态分配值

来自分类Dev

结构中的动态分配

来自分类Dev

如何在Python中为类属性动态分配值?

来自分类Dev

在Python中,动态分配字典条目

来自分类Dev

如何将动态分配与以迭代器作为参数的方法一起使用?

来自分类Dev

为结构数组动态分配内存

来自分类Dev

如何在AngularJS中动态分配过滤器

来自分类Dev

如何在C ++中访问动态分配的矩阵?

来自分类Dev

如何在Django集合中动态分配别名?

来自分类Dev

如何在C中动态分配静态存储?

来自分类Dev

如何在React中动态分配属性?

来自分类Dev

如何在函数中动态分配内存?

来自分类Dev

如何在C ++中引用动态分配的字符数组

来自分类Dev

如何动态分配valdr规则?

来自分类Dev

如何扩展动态分配的数组

来自分类Dev

如何制作动态分配的结构数组?

来自分类Dev

如何释放动态分配的向量?

来自分类Dev

我如何动态分配属性

来自分类Dev

如何动态分配全局 int*?

来自分类Dev

python遍历动态分配的Cython数组

来自分类Dev

动态分配唯一值-Python

来自分类Dev

在pascal中动态分配匿名函数

来自分类Dev

C ++中的动态分配数组

来自分类Dev

在动态分配的矩阵中读取错误

来自分类Dev

释放C中动态分配的内存

来自分类Dev

在类中动态分配向量

来自分类Dev

C ++中的动态分配错误