0

以下适用于 Python 3.2.3。


我想编写一个带有两个参数的函数,一个键字符串和一个目标字符串。这些函数是递归确定(必须是递归的)关键字符串在目标字符串中的位置。

目前,我的代码如下。

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 回答