我正在尝试查找字符串的所有排列,如下面的代码所示:
def permute(self, nums):
if len(nums) == 0 or len(nums) == 1:
return nums
perms = []
for i in range(len(nums)):
prefix = nums.pop(i)
for permutation_of_suffix in self.permute(nums):
perms.append([prefix].extend(permutation_of_suffix))
nums.insert(i, prefix)
return perms
但是,这一行:
perms.append([prefix].extend(permutation_of_suffix))
抛出错误:
TypeError: 'int' object is not iterable
我不太确定为什么会这样。通过在[]
中包装前缀,然后在从较低级别的递归返回的另一个现有列表上运行.extend()
来创建新列表有什么问题。
任何对我的代码的建议或反馈将不胜感激。
谢谢。
答案 0 :(得分:0)
我没有看到您的逻辑,但在指定的行中发现了问题
您不能将数字扩展为列表,表示
@Test
解决方案:
k=[3]
k.extend(4) #will through an error
k.extend([4]) # will work will extend k list , output k=[3,4]
print(permute([1,2,3]))
输出:def permute(nums):
if len(nums) == 0 or len(nums) == 1:
return nums
perms = []
for i in range(len(nums)):
prefix = nums.pop(i)
for permutation_of_suffix in permute(nums):
k=[prefix]
if type(permutation_of_suffix) == list:
k.extend(permutation_of_suffix)
else:
k.extend([permutation_of_suffix])
perms.append(k)
nums.insert(i, prefix)
return perms