簡體   English   中英

如何創建一個遞歸函數以返回單個參數(字符串列表)的副本,但每個字符在每個位置都重復?

[英]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?

基本上,我需要編寫一個遞歸函數,該函數需要一個字符串列表,然后返回一個字符串列表,每個字符串中的每個字符都重復/加倍。

例如,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”,“ iiss”,“ ggrreeaatt”]。 如果有人可以幫助我找出該代碼,我將不勝感激。

錯誤消息提供了一個重要線索:

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

所以,最后一行應該是

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM