【发布时间】:2023-04-04 02:37:01
【问题描述】:
我正在尝试实现一个递归函数,但遇到了一些困难,不胜感激。例如,让我们尝试创建一个名为 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']]]]
这显然不是理想的输出,但方向正确。还有什么其他方法可以做到这一点?感谢您的想法。
【问题讨论】:
-
您知道
+
列表运算符吗? -
也许将 append 改为 extend
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python递归函数调用 - Python技术站