python - 使用递归将列表成员转换为整数值
问题描述
我无法使用此递归函数将 listA 作为整数 2345。我想将 [2,3,4,5] 转换为 2345。
listA = [2,3,4,5]
n = len(listA)
def fun(n):
if(n == 0):
return listA[n]
else:
return fun((listA[n]) + (10**n))
fun(listA)
解决方案
你有正确的想法,但你有一些问题。
- 您没有遍历列表,而是在列表的“第 n 个”元素(甚至不是有效索引)上运行递归。
- 您没有“退出”条件。
- 您不是将列表连接在一起,而是将列表的长度连接在一起。
你会发现下面的代码解决了这些问题。
def fun(listA):
n = len(listA)
if n == 0:
return
elif n == 1:
return listA[0]
else:
return int(str(listA[0]) + str(fun(listA[1:])))
listA = [2,3,4,5]
fun(listA)
如果您对类型转换不满意,可以更改最终的 return 语句:
return (10**(n-1))*listA[0] + fun(listA[1:])