创建相邻交换排列的列表



我正在寻找一个函数,该函数将获取诸如 [a,b,c,d] 之类的列表并输出所有排列的列表,其中相邻索引被交换,即

[[b,a,c,d], [a,c,b,d],[a,b,d,c], [d,b,c,a]]

谢谢

简单的方法,你可以使用for循环并交换相邻的项目,tmp=l[:]会做一个浅拷贝,它不会改变原始列表l

有关更多详细信息,请参阅浅拷贝、深拷贝和正常赋值操作之间的确切区别是什么?:

l=['a', 'b', 'c', 'd']
for i in range(len(l)):
    tmp=l[:]
    tmp[i],tmp[i-1]=tmp[i-1],tmp[i]
    print tmp

结果:

['d', 'b', 'c', 'a']
['b', 'a', 'c', 'd']
['a', 'c', 'b', 'd']
['a', 'b', 'd', 'c']

最新更新