python - 在我的函数中用括号混淆了 bug

标签 python recursion

def cube_of(valz):    
    '''Returns the cube of values'''    
    if len(valz) == 0:    
        return 0    
    else:    
        new_val = [valz[0] ** 3]    
        return  [new_val] + [cube_of(valz[1:])] 

所以我制作这个函数用于演示,它采用名为 valz 的值列表并采用每个值的立方体,然后返回这些立方体的列表。

例如,假设输入是 [-1,2,-3,4,-5] - 它应该返回 [-1,8,-27,64, -125] 但它返回 [-1, [8, [-27, [64, [-125, 0]]]]]。 是什么导致了额外的括号?如果我删除代码中的括号,那么它要么给出这些立方体的总和(这是不正确的),要么给出错误(关于将 int 添加到 list).我尝试对此进行调试,甚至让我的 friend 看了一下,但我们都很困惑。

最佳答案

cube_of(valz[1:]) 已经是一个列表。无需将其括在括号中。

return [new_val] + cube_of(valz[1:])

关于python - 在我的函数中用括号混淆了 bug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39938830/

相关文章:

python - 生成两个同构图之间的映射

javascript - 对象嵌套属性访问

python - Pandas:将宽数据框 reshape 为多索引长数据框

python - 属性是否适用于 Django 模型字段?

mysql - 如何在不中断连接的情况下在 node.js mysql 中使用递归?

recursion - 使用 2 个递归调用进行 F# 尾调用优化?

Python Quicksort 函数进入无限循环

ruby - 如何在 Ruby 中编写递归阶乘函数?

python - 在 k 个容器中随机分配一个整数,并在分配中均匀分布

python - 如何在 Anaconda 中为不同的 Python 版本安装一个包?