以下内容适用于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))
答案 0 :(得分: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]
答案 1 :(得分: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]