自学内容网 自学内容网

TypeError:类型“int”的对象没有 len()

问题整理

我想编写一个递归函数来计算数组中元素的总和,但是当我将数组传递给函数时,它会认为我传递了一个整数,并写道没有 len() 函数

arr1 = [1, 2, 3, 4, 5, 6]

def rec_sum(arr):
    if len(arr) == 0:
        return 0
    else:
        return(arr[len(arr) - 1] + rec_sum(arr.pop(len(arr) - 1)))

print(rec_sum(arr1))

原因

Python 的list.pop()方法返回弹出的元素,因此您将整数传递给递归函数调用,而不是另一个列表。尝试使用列表切片:

arr1 = [1, 2, 3, 4, 5, 6]

def rec_sum(arr):
    if len(arr) == 0:
        return 0
    else:
        return(arr[len(arr) - 1] + rec_sum(arr[:len(arr)-1]))

print(rec_sum(arr1))

输出:21

如果你想使用pop,请执行以下操作return arr.pop() + rec_sum(arr)。Python 保证从左到右评估操作数,因此你知道在调用+之前数组将被修改。rec_sum


原文地址:https://blog.csdn.net/zhengzhaoyang122/article/details/142866284

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!