我正在尝试实现一个递归函数,但遇到了一些困难,希望你的指导。比如,我们尝试创建一个名为sliding
的函数来做到这一点。
sliding("python", 2)
["py", "yt", "th", "ho", "on"]
也就是说,对于所选整数,我们沿着字符串滑动,获取适当长度的子字符串,然后将它们全部返回到一个列表中。
现在让我来(愚蠢地)尝试一下递归地定义它:
def sliding(string,k):
return s if len(string)==k else [string[:k]].append(sliding(string[1:],k))
这种方法行不通,主要是因为list.append()
是就地操作,并返回一个None
。所以我的问题是 - 即使有很多Python方法是在原地发生的,是否有一种方法可以执行这种递归函数?
到目前为止,以下是最好的方法:
def sliding(s,k):
if len(s)==k:
return s
else:
temp = [s[:k]]
temp.append(sliding(s[1:],k) )
return temp
这将导致
sliding("python",k=2)
['py', ['yt', ['th', ['ho', 'on']]]]
这显然不是期望的输出,但方向正确。还有其他什么方法可以做到这一点?感谢您的想法。
+
运算符? - Nayuki