0

以下は Python 3.2.3 の場合です。


キー文字列とターゲット文字列の 2 つの引数を取る関数を書きたいと思います。これらの関数は、ターゲット文字列内のキー文字列の位置を再帰的に決定します (再帰的でなければなりません)。

現在、私のコードは次のとおりです。

def posSubStringMatchRecursive(target,key):
    import string
    index=str.rfind(target, key)
    if index !=-1:
        print (index)
        target=target[:(index+len(key)-1)]
        posSubStringMatchRecursive(target,key)

これに関する問題は、場所を示す数字が出力されるだけなので、ターゲット文字列内のキー文字列のすべての場所をリストに格納する方法がないことです。

それで、私の質問は、ターゲット文字列内のキー文字列の位置をリストに格納できるようにコードを変更する方法はありますか?


出力例

countSubStringMatchRecursive ('aatcgdaaaggraaa', 'aa')

13
12
7
6
0

編集

次のコードは、Ashwini のコードでは問題なく動作するようです。ありがとう、レフ。

def posSubStringMatchRecursive(target,key):
    import string
    index=str.rfind(target, key)
    if index ==-1:
        return []
    else:
        target=target[:(index+len(key)-1)]
        return ([index] + posSubStringMatchRecursive(target,key))
4

2 に答える 2

0

宿題の質問に疑わしいほど似ているため、リストを返す再帰関数の例を次に示します。

In [1]: def range_rec(limit):
    if limit == 0:
        return []
    else:
        return ([limit-1] + range_rec(limit-1)[::-1])[::-1]
   ...: 

In [2]: range_rec(10)
Out[2]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
于 2012-06-23T09:49:06.670 に答える
0
def posSubStringMatchRecursive(target,key,res):
    import string
    index=str.rfind(target, key)
    if index !=-1:

        target=target[:(index+len(key)-1)]
        res.append(index) #append the index to the list res, 
        return posSubStringMatchRecursive(target,key,res) #Use return here when calling recursively else your program will return None, and also pass res to the function
    else:
        return res

 print(posSubStringMatchRecursive('aatcgdaaaggraaa', 'aa',[]))#pass a empty list to the function
print(posSubStringMatchRecursive('aatcgdaaaggraaa', 'a',[]))

出力: `

[13, 12, 7, 6, 0]`
[14, 13, 12, 8, 7, 6, 1, 0]
于 2012-06-23T09:49:11.727 に答える