我想制定一個算法來洗牌列表,然後根據這條規則製作一個所有組合的新列表:我該如何將這個列表換成這個規則?
您只能交換一對。例如:
array = [1, 2, 3]
[3, 2, 1] #number at index 0 switched with number at index 2
有關如何編寫它的任何想法?
編輯: Saschas代碼運行良好。我問這個問題之前寫了這個代碼:
sols = []
for i in range(len(a)):
for j in range(len(a)):
a[i] = a[j]
a[j] = a[i]
sols_perm.append(a)
我知道我會得到列表中的一些相同的元素,因爲無序對的,但它只是創造了一個完整的相同元素的列表。任何想法爲什麼?
你的交換是錯誤的。您需要一個臨時變量(在用於設置[j]之前更改了一個[i])。我的方法中的代碼工作不同(python風格的交換)!下次直接添加代碼! – sascha