如何创建一个递归函数,返回单个参数(字符串列表)的副本,但每个字符在每个位置都重复



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

例如,doubleStringList([I','love','overflow'](将返回[会,会,会]。

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

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

例如,输入doubleCharacter("overflow"(将返回"oovvierffllooww">

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

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

理论上,如果我输入了doubleStringList(["overflow","is","great"](,它应该返回["oovvierffllooww","iiss","ggrreeaatt"]。如果有人能帮我弄清楚这个代码,我将不胜感激。

错误消息提供了一条重要线索:

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

所以,最后一行应该是

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

相关内容

最新更新