文字列置換問題をコード化しようとしています。文字列の代わりに[1,2,3]のような整数のリストがあります。私はリストのすべての可能な順列を印刷しなければならない。しかし、私のコードにはわからない問題があります。どういうわけか、ベースケースのif not in words
行は一度だけヒットします。私は過去1時間からこれを理解しようとしています。どんな助けもありがとう! TIA は、ここでバグがあなたがそうあなたが変更されましたが、変更が記録されていなかっただけのコピーで終わる同じリストnums
を変更しておくことで、コード配列置換のグローバル変数に文字列置換が追加されない理由を追跡できません
words = list()
def permute(nums):
if len(nums) == 0:
return None
l = 0
r = len(nums)
permute_helper(nums,0,r)
def permute_helper(nums,start,end):
current = 0
if start == end-1:
if not nums in words:
print 'appended'
words.append(nums)
else:
for current in range(start,end):
temp = nums[start]
nums[start] = nums[current]
nums[current] = temp
#Recursive call
permute_helper(nums,start+1,end)
temp = nums[start]
nums[start] = nums[current]
nums[current] = temp
permute([1,2,3])
print words
itertoolsを使用してください... –
ありがとうございます。私はそれを更新する –
はるかに良い。ありがとう。 :-) –