def permute(nums):
result = []
get_permute([], nums, result)
return result
def get_permute(current, num, result):
if not num:
result.append(current+[])
for i, v in enumerate(num):
current.append(num[i])
get_permute(current, num[:i] + num[i + 1:], result)
current.pop()
if __name__ == "__main__":
r = permute([1,2,3])
for perm in r:
print(perm)
current + [] 在 result.append(current+[]) 中做了什么,如果我删除 +[] 它打印空白列表.
请您参考如下方法:
它正在复制列表。当您删除它时,您会遇到 List of lists changes reflected across sublists unexpectedly问题,因为外部列表包含对同一列表的许多引用,而不是对许多不同列表的引用。
您应该能够将其替换为 current.copy()(使用 Python >= 3.3)或 list(current) 以避免 future 读者出现类似的混淆。 (有 a lot of ways to copy a list 。选择你喜欢的并坚持下去。)
