首页 > 解决方案 > 使用递归将列表成员转换为整数值

问题描述

我无法使用此递归函数将 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)

标签: pythonpython-3.x

解决方案


你有正确的想法,但你有一些问题。

  1. 您没有遍历列表,而是在列表的“第 n 个”元素(甚至不是有效索引)上运行递归。
  2. 您没有“退出”条件。
  3. 您不是将列表连接在一起,而是将列表的长度连接在一起。

你会发现下面的代码解决了这些问题。

    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:])

推荐阅读