Python 创建相邻交换排列的列表

Python 创建相邻交换排列的列表,python,permutation,Python,Permutation,我正在寻找一个函数,它将接受一个列表,如[a,b,c,d],并输出一个列表,其中相邻索引交换,即[b,a,c,d],[a,c,b,d],[a,b,d,c],[d,b,c,a]] 感谢简单的方法,您可以使用进行循环并交换相邻的项,tmp=l[:]将创建一个浅拷贝,并且不会更改原始列表l 有关更多详细信息,请参阅: 结果: ['d', 'b', 'c', 'a'] ['b', 'a', 'c', 'd'] ['a', 'c', 'b', 'd'] ['a', 'b', 'd', 'c'] 请尽量避

我正在寻找一个函数,它将接受一个列表,如[a,b,c,d],并输出一个列表,其中相邻索引交换,即[b,a,c,d],[a,c,b,d],[a,b,d,c],[d,b,c,a]]


感谢简单的方法,您可以使用
进行
循环并交换相邻的项,
tmp=l[:]
将创建一个浅拷贝,并且不会更改原始列表
l

有关更多详细信息,请参阅:

结果:

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

请尽量避免在你的答案中使用元注释。tmp=l[:]与tmp=l不同吗?我想你可以只做tmp[I],tmp[I-1]=tmp[I-1],tmp[I]而不是mod@Rik
tmp=l[:]
做一个浅拷贝,
tmp=l
将改变
l
,但
tmp=l[:]
不会改变,是的
tmp[i],tmp[i-1]=tmp[i-1],tmp[i]
更好。许多人问问题时没有编写任何代码,这将使其像编码服务,但实际上我认为这是一个好问题。找到一个简单的Pythonic方法是值得的。是的,我可以在这里写代码,但我从你的解决方案中学到了,因为我不是一个专业的pythoner
['d', 'b', 'c', 'a']
['b', 'a', 'c', 'd']
['a', 'c', 'b', 'd']
['a', 'b', 'd', 'c']