Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何增加函数中的循环数?_Python_Function_Loops_Permutation - Fatal编程技术网

Python 如何增加函数中的循环数?

Python 如何增加函数中的循环数?,python,function,loops,permutation,Python,Function,Loops,Permutation,我这里有密码 letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] ret = "" for i in range(26): for j in letters: ret += f"({letters[i]},{j})" print(ret) #Output: (a,

我这里有密码

letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
ret = ""
for i in range(26):
  for j in letters:
    ret += f"({letters[i]},{j})"
print(ret)

#Output: 
(a,a)(a,b)(a,c)(a,d)(a,e)(a,f)(a,g)(a,h)(a,i)(a,j)(a,k)(a,l)(a,m)(a,n)(a,o)(a,p)...(z,y)(z,z)
我试图解决的问题是:

当我尝试增加排列的数量时,例如从2位数增加到3位数,我必须添加另一个循环。当我想将其作为一个函数来实现时,如何在增加位数的同时增加循环数,有人能帮助我:(


这就是我在尝试将位数从2增加到3时所做的:

for i in range(26):
  for k in range(26):
    for j in letters:
      ret += "(" + str(letters[i]) + "," + str(letters[k]) + "," + j + ")"
print(ret)

#Output
(a,a,a)(a,a,b)(a,a,c)(a,a,d)(a,a,e)(a,a,f)(a,a,g)(a,a,h)(a,a,i)(a,a,j)(a,a,k)(a,a,l)(a,a,m)...(z,z,z)

如何在函数中实现这一点?

您可以使用这样的itertools实现这一点

import itertools

def perm_func(arr, x):
    ret_str = ""
    p for p in itertools.product(arr, repeat=x):
        ret_str += str(p)

    return ret_str

您可以使用这样的itertools来实现这一点

import itertools

def perm_func(arr, x):
    ret_str = ""
    p for p in itertools.product(arr, repeat=x):
        ret_str += str(p)

    return ret_str

查看
itertools.product
(您需要的是笛卡尔积,而不是置换,尽管itertools将同时拥有这两种和更多…)正如Julien所建议的,您可以参考python的itertools源代码。它们非常清晰整洁。例如,您的问题的答案可以在这里找到:。查看
itertools.product
(您需要的是笛卡尔积,而不是置换,尽管itertools将同时具有这两种和更多…)正如Julien所建议的,您可以参考python的itertools源代码。它们非常清晰整洁。例如,您的问题的答案可以在这里找到:。