【问题标题】:How do I fix my recursive function that converts a list to a string如何修复将列表转换为字符串的递归函数
【发布时间】:2020-10-15 05:31:06
【问题描述】:

我想将 list 转换为 string 并使用以下代码行找到我想要的字符串。

我的代码

def list_to_string2(values):
    num = ""
    x=0
    x= values[x]
    num += str(x)
    if len(values) == 0:
        return num
    else:
        return list_to_string2(values) + values.pop(0)

values = [1, 2, 3, 4, 5]
s2 = list_to_string2(values)
print(s2)

遇到这样的问题:RecursionError: maximum recursion depth exceeded while getting the str of an object

由于我处于编程的初级阶段,因此我无法应对这一挑战。

非常感谢您的帮助。谢谢。

【问题讨论】:

  • @Rakesh 这些不是很好的复制品。这里的问题是修复递归函数,而不是加入列表的通用方式。
  • 这能回答你的问题吗? How to convert list to string

标签: python python-3.x list recursion


【解决方案1】:

这是您的代码的固定版本:

def list_to_string2(values, num=""):
    s = str(values[0])
    if len(values) == 1:
        return num + s
    else:
        num += s + ", "
        return list_to_string2(values[1:], num)

如果您不需要递归,您可以简单地执行以下操作:

def list_to_string2(values):
    return ", ".join(map(str, a))

map(str, ...) 将每个项目转换为字符串,", ".join() 将使用", " 作为分隔符连接这些元素。

【讨论】:

  • 非常感谢!如果你不介意我问,你能向我解释一下你解决这个问题的思路吗
  • 当然,但你已经足够接近了。您基本上应该将到目前为止的进度传递回递归函数,以便能够保持状态。您只是在每个循环中从头开始创建num
猜你喜欢
  • 2017-09-17
  • 2015-11-27
  • 2014-12-03
  • 2021-11-24
  • 1970-01-01
  • 2019-10-16
  • 2021-06-11
  • 2017-07-11
  • 2015-07-14
相关资源
最近更新 更多