2017-03-25 14 views
-3

[a、b、c、d]などのリストを取得し、隣接するインデックスが交換されるすべての順列のリストを出力する関数を探しています。[[b、 、C、D]、[、C、B、D]、[A、B、D、C]、[D、B、C、]]隣接スワップ順列のリストを作成する

おかげ

+0

多くの人々は、コーディングサービスのようSOようになりますよう、任意のコードを記述せずに質問をするが、実際に私はこれがあると思います良い質問です。 これを行うには単純なPythonの方法を見つける価値があります。 – McGrady

+0

ええ、私はここにコードを書くことができましたが、私は熟練したpythonerではないので、あなたの解決策から学んだ – Rik

答えて

1

簡単な方法、あなたはforループを使用し、隣接するアイテムを交換することができます。tmp=l[:]は浅いコピーを作成し、元のリストlは変更されません。

What exactly is the difference between shallow copy, deepcopy and normal assignment operation?から詳細をご覧ください:

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'] 
+0

あなたの答えからメタコメントをつけてください。 – vaultah

+0

は、tmp = 1 [:]とは異なり、tmp = 1? – Rik

+0

mod @ tmp [i-1] = tmp [i-1]、tmp [i]の代わりにtmp [i]を使うことができます。 – Rik

関連する問題