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)!