我必须解决的问题是将嵌套列表作为输入,并返回相同的嵌套列表,除了每个元素是以前存在于该点中的元素的平方.这是我的代码
>>> 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))
现在我收到一个错误,说’int’对象不可迭代.我假设这意味着它正在尝试为整数类型运行循环,这对我来说没有意义,因为我只重新运行列表类型的函数.
解决方法
>不要在递归调用中返回,一旦返回,您将停止处理所有剩余元素
> element == type(list)不正确,因为type(list)是< class'type'>它永远不会等于列表中的任何项目.而是使用isinstance
>在基本情况下,您需要按索引访问元素以反映更改
> element == type(list)不正确,因为type(list)是< class'type'>它永远不会等于列表中的任何项目.而是使用isinstance
>在基本情况下,您需要按索引访问元素以反映更改
def treemap(lst): for i,element in enumerate(lst): if isinstance(element,list): treemap(element) else: lst[i] = lst[i]**2 return lst
输出:
[1,4,9,[16,[25,36],49]]