我试图制作排列算法。 你认为这是不好的算法吗?
def permutation():
data = ['a', 'b', 'c', 'd']
for i in data:
for j in data:
for k in data:
if (i == j) or (j == k) or (i == k):
pass
else:
print(i+"-"+j+"-"+k)
permutation()
答案 0 :(得分:0)
没有。这不是一个好的......可能像
For i in data
For j in data
If i=j, pass
Else for k in data
If k=j or k=i, pass
Else print
唯一的区别是k不会有不必要的循环。
答案 1 :(得分:0)
你可以在列表理解中完成整个事情:
result = [i + " " + j + " " + k for k in data for j in data for i in data if (i!=j and j!=k and i!=k)]
print result
一个区别是打印完成一次,并且每次找到排列时都不需要。您的结果也会在列表中捕获。
要回答您的问题,您的算法会根据您的数据列表给出正确的答案。但是,如果您的数据列表不包含4个元素,则它不会缩放。它如何适用于10个元素?该列表也不通过permutation()参数传递,因此您也可以不重用此函数。您每次循环时都可以访问打印服务,您可以推迟到以后再使用。
因此,如果您正在制作一般排列算法,那么在许多帐户中这将被视为不良。