手工python怎么写全排列?

神圣之风
  • 557

不用iteraltools的permutation

symbol=["A","B","C"]
rst=[]
for i in symbol:
    for j in symbol:
        for k in symbol:
            rst.append([i,j,k])
print(rst)#生成排列

如果有N=10层,就很难写10个for循环了。应该怎样办呢?

回复
阅读 468
1 个回答
xdsnet
  • 7.5k

可以考虑用递归啊,循环加递归即可。
比如:

rst=[]
symbol=["A","B","C","D","E","F","G","H","I","J"]
def perm(n,b,e):
    if b>=e :
        rst.append(n)
    else:
        i = b
        for num in range(b, e):
            n[num],n[i] = n[i],n[num]
            perm(n,b+1,e)
            n[num],n[i]=n[i],n[num]
perm(symbol, 0, len(symbol) )
print(rst)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏