我想列出n个元素的群组中所有可能的关联操作。例如,当n=3时,我希望它打印:
a*(a*a) = (a*a)*a
a*(a*b) = (a*a)*b
a*(a*c) = (a*a)*c
... 24 more lines
现在,我尝试编写以下Python3代码来实现这个功能。
import itertools as it
def permutation_func(str_, rep):
chars = list(str_)
results = []
for tuple_ in it.product(chars, repeat = rep):
i = ''.join(tuple_)
results.append(i)
return results
my_list = permutation_func('abc', 3)
for i in my_list:
print(i, " = ", i)
然而,我得到的输出是:
aaa = aaa
aab = aab
aac = aac
... and 24 more lines
我认为我正在正确的轨道上。但我无法弄清楚如何将
aaa = aaa
转换成 a*(a*a) = (a*a)*a
,基本上我需要在文本中多次插入 *
符号和括号。我尝试搜索并发现需要使用正则表达式来完成这个操作。然而,我从未使用过正则表达式。因此,我正在寻找一种不使用正则表达式的替代方法。我甚至不知道是否可以在没有正则表达式的情况下实现,如果不行,请告诉我。
(a * b * c) * d
、(a * b) * (c * d)
、a * (b * c) * d
或者a * (b * c * d)
,而所有这些都相等。 - AKSabc
或者abcd
,你总是在生成一个由三个字符组成的排列吗? - AKS