嵌套列表Python 3中的数字平方

DrJ*_*sop 6 python recursion nested-lists

我必须解决的问题是将嵌套列表作为输入,并返回相同的嵌套列表,除了每个元素是以前存在于该点中的元素的平方.这是我的代码

>>> def treemap(lst):
...     for element in lst:
...         if element == type(list):
...             return treemap(element)
...         else:
...             element=element**2
...     return lst
>>> lst = [1, 2, 3, [4, [5, 6], 7]]
>>> print(treemap(lst))
Run Code Online (Sandbox Code Playgroud)

现在我收到一个错误,说'int'对象不可迭代.我假设这意味着它正在尝试为整数类型运行循环,这对我来说没有意义,因为我只重新运行列表类型的函数.

cs9*_*s95 6

  1. 不要return在递归调用中,一旦返回,您将停止处理所有剩余元素

  2. element == type(list)是不正确的,因为type(list)是<class 'type'>它永远都不会等于在你的列表中的任何项目.请isinstance改用

  3. 在基本情况下,您需要按索引访问元素以反映更改


def treemap(lst):
    for i, element in enumerate(lst):
        if isinstance(element, list):
            treemap(element)
        else:
            lst[i] = lst[i]**2
    return lst
Run Code Online (Sandbox Code Playgroud)

输出:

[1, 4, 9, [16, [25, 36], 49]]
Run Code Online (Sandbox Code Playgroud)