2017-10-17 13 views
0

whileループを使用してリスト内の要素を入れ替えようとしています。そのため、関数は一度に2つの連続する要素を交換することしかできません。可能なリストをリストに入れて返信してください。しかし、それは1つの可能なパスしか印刷していません。リスト内の要素を交換できない、Python

初期リストは、[4,3,2,1]

期待出力= [3,4,2,1]、[4,2,3,1]、[4、 3,1,2]

電流出力= [3,2,1,4]、[3,2,1,4]、[3,2,1,4]

私のコードは

array = [4,3,2,1] 

def possible_paths(Array): 
    temp_arr = [] 
    i=0 
    while i < (len(Array) -1): 
     temp1 = Array[i] 
     Array[i] = Array[i+1] 
     Array[i+1] = temp1 
     temp_arr.append(Array) 
     i = i+1 
    return temp_arr 

arr1 = [] 
poss = possible_paths(array) 
arr1.append(poss) 
print(arr1[:]) 
+0

あなたが何を得ることを期待しているのか、あなたが何を得るのかは不明です。 – RemcoGerlich

+0

期待される出力は私が望むものです。そして、現在の出力は、私が今その機能を使って得ているものです。 – Sami

答えて

2
array = [4,3,2,1] 
def possible_paths(Array): 
    temp_arr = [] 
    i=0 
    while i < (len(Array) -1): 
     clone_array = Array[:] 
     clone_array[i], clone_array[i+1] = clone_array[i+1], clone_array[i] 
     temp_arr.append(clone_array) 
     i = i+1 
    return temp_arr 

poss = possible_paths(array) 
print(poss) 
です

出力:[[3、4、2、1]、[4,2,3,1]、[4,3,1,2]]

3

あなたが探しているものは:

array = [4,3,2,1] 

def possible_paths(arr1): 
    temp_arr = [] 
    i=0 
    while i < (len(arr1) -1): 
     nextpath = arr1[:] 
     nextpath[i], nextpath[i+1] = nextpath[i+1], nextpath[i] 
     temp_arr.append(nextpath) 
     i += 1 
    return temp_arr 

arr2 = possible_paths(array) 
print(arr2[:]) 

同じリストが何度も繰り返し編集されていました。また、変数temp1は必要ありません。タプルを使って複数の変数を割り当てることができます。あなたは誤ってarr1に配列の配列の配列を作成しました。 temp_arrは既に配列の配列なので、別の配列の中に入れる必要はありません。 "i + = 1"は単に "i = i + 1"の省略形です。大文字は通常命名に使用されないので、関数変数としてarr1を使用する方が良いです。

+0

ありがとう!それは完全に働いた:) – Sami

関連する問題