Ich versuche, alle Permutationen für eine bestimmte Menge zu generieren. Bei jedem Rückruf meines Codes ändert sich der Inhalt des Arrays aus irgendeinem Grund, wenn ich die Append-Funktion verwende. Kann mir jemand in die richtige Richtung zeigen?Warum mutiert mein Code den Inhalt einer Liste in Python?
class Solution(object):
def permute(self, nums):
res = []
self.generate_permutations(nums, res, 0, len(nums)-1)
return res
def generate_permutations(self, nums, res, l, r):
if l == r:
res.append(nums)
for i in range(l, r+1):
nums[i], nums[l] = nums[l], nums[i]
print('res', res)
self.generate_permutations(nums, res, l+1, r)
nums[l], nums[i] = nums[i], nums[l]
By the way, 'Rückkehr res.append'' None' zurückkehren wird und Sie nie die rekursive Rückgabewert erfassen, aber 'itertools' dein Freund ist, und Sie sollten Lernen Sie diese Methode, Permutationen zu machen –
Listen werden als Referenz übergeben. –
@ cricket_007 keine ahnung, warum ich zurück res.append da drin hatte. Aber ich benutze itertools nicht, weil dies für algorthm Studie ist. Es erzeugt die Permutationen korrekt, aber es gibt einen Python, der die Werte verändert – driftdrift