我的递归代码中的“ Int对​​象不是不可迭代的错误”,不确定我哪里出错了

时间:2019-06-26 09:48:51

标签: python

我正在尝试查找字符串的所有排列,如下面的代码所示:

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()来创建新列表有什么问题。

任何对我的代码的建议或反馈将不胜感激。

谢谢。

1 个答案:

答案 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