【问题标题】:How to create a recursive function that returns a copy of a single parameter (a list of strings), but with every character duplicated in each place?如何创建一个递归函数,该函数返回单个参数的副本(字符串列表),但每个字符在每个位置都重复?
【发布时间】:2018-12-20 03:57:36
【问题描述】:

基本上,我需要编写一个递归函数,它接受一个字符串列表,然后返回一个字符串列表,其中每个字符串中的每个字符重复/加倍。

例如,doubleStringList(['I','love','overflow']) 将返回 ['II','lloovvee','oovveerrffllooww'].

我决定把它分成两个递归函数。我已经创建了一个函数,它返回带有双字符的字符串:

def doubleCharacter(seq):
    if len(seq) == 0:
        return seq
    else:
        return (seq[0] * 2) + doubleCharacter(seq[1:])

例如,输入 doubleCharacter("overflow") 将返回 'oovveerrffllooww'

我正在尝试创建第二个递归函数,它使用第一个除了字符串列表作为参数而不是单个字符串。例如:

def doubleStringList(sList):
    if len(sList) == 0:
        return sList
    else:
        return doubleCharacter(sList[0]) + doubleStringList(sList[1:])

理论上,如果我输入了 doubleStringList(["overflow","is","great"]),它应该返回 ["oovveerrffllooww", "iis", "ggrreeaatt"]。如果有人可以帮我弄清楚这段代码,我将不胜感激。

【问题讨论】:

  • 您好,欢迎来到 Stack Overflow。今后,我敦促您提供所有相关信息。在这种情况下,代码简单且易于执行,但一般来说,如果您在调查问题期间收到错误消息,这是应该与您的代码一起包含在问题中的第一件事。
  • 请加语言标签

标签: string list function recursion


【解决方案1】:

错误信息提供了一个很大的线索:

TypeError: can only concatenate str (not "list") to str

所以,最后一行应该是

return [doubleCharacter(sList[0])] + doubleStringList(sList[1:])

【讨论】:

  • 哇,我真的太接近了!对不起,我忘了包括错误,但非常感谢!
  • 确实如此接近:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-27
  • 1970-01-01
  • 2015-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多