试图创建一个python脚本来用n回答一个数学问题!组合



我试着用python编写一个脚本来回答我的数学问题,但我还没有成功。

我需要在不使用两次的情况下,从一系列字符中找到所有可能的排列示例:我有字母";a、 b;6种可能性中的2种是"0";abc";或";bca";但是";aab";不是有效的组合。

有N个阶乘的可能性,所以列表增长得很快,所以我想我应该制作一段代码,把所有的排列都吐出来。我试着把3个循环组合在一起,为一个3个字母的单词做一个,但我没有得到所有的安排,在这一点上我不知道该怎么办,我的头很疼。

我恳请你帮助我。非常感谢任何关于如何解决问题的建议。感谢

有内置的python库itertools.permutations可以做到这一点。然而,因为你说你在解决一个数学问题,我认为你想自己做,这里有一个基于递归的代码来做:

def permutations(prefix, input_str):
# base case
if len(input_str) == 1:
print(f"{prefix}{input_str}")
else:
# loop over string to split into groups of two 
# eg: for "abc" : (a, bc), (b, ac), (c,ab)
for i in range(len(input_str)):
permutations(prefix+input_str[i], input_str[:i]+input_str[i+1:])

permutations("", "abc")

它给出:

abc
acb
bac
bca
cab
cba
from itertools import permutations
perm = permutations(['a', 'b', 'c'], 3)
for i in perm:
print(*i, sep='')

输出:

abc
acb
bac
bca
cab
cba

最新更新