置换问题

我正在尝试翻译这个优雅的Erlang代码,用于查找所有
列表的排列.
我认为它是与现在一样的函数,但它在Python中不起作用.
--在Python语言中是UPD.这是它应该发挥的作用.
烫发([])-[[]];
Perms(L)-[[H|T]|H<-L,T<-perms(L-[H])].
定义烫发(列表):
如果Lista==[]:
返回[[]]
其他:
对于列表中的h:
为t返回[([h]+[t]),单位为perms(upd(lista,h)]
Def upd(lista,elem,acc=tuple([])):
Lista=元组(Lista)
如果Lista==():
返回列表(Acc)
如果Lista[0]==elem:
返回列表(acc+tuple(lista[1:]))
其他:
返回UPD(lista[1:],elem,acc+tuple([lista[0]]))

# 回答1


嗨,
这里有一个(更好的?)功能:
默认置换(序号):
如果不是,顺序:
退货[序号]
其他:
温度=[]
对于k in范围(len(Seq)):
零件=序号[:k]+序号[k+1:]
对于置换(部分)中的m:
Temp.append(序号[k:k+1]+m)
退货温度
干杯
詹姆斯
2008年9月8日,星期一,早上6:47,cnb --
--
--"靠方法解决问题"
# 回答2


Cnb 我认为最直接的抄写方式可能是:
定义烫发(Xs):
如果len(Xs)==0:返回[[]]
在Xs中返回h的[(h]+t)
对于烫发中的t([y for y in xs,if y Not in[h]])]
但它的效率相当低,Erlang版本也是如此.

标签: python

添加新评论