我正在寻找一个函数,该函数将获取诸如 [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']