python - Python递归(可能是递归内的递归?)将例如字符串划分为子字符串(每个子字符串都可以有更多的子字符串)
问题描述
我对递归函数的经验很少,但现在我有一个问题,我认为可以更容易地递归解决。我也想借此机会最终了解有关递归函数的更多信息。
问题:
我有一些输入字符串可以细分为例如 3 个部分(但假设我事先不知道有多少部分)并且每个部分都可以进一步细分为 sub_parts 等。
示例:
full_string = "[Part1:[Part1 的许多子部分]] 和 [Part2:[Part2 的许多子部分]] 和 [Part3:[Part3 的许多子部分]]"
调用函数 recursive_func(full_string) 后,full_string 将被细分为:
- 第一次运行的结果:[Part1:[Part1 的许多 sub_parts]]
- 第二次运行的结果:[Part2:[Part2 的许多 sub_parts]]
- 第三次运行的结果:[Part3:[Part3 的许多子部分]]
我的功能在这里停止。但我希望它现在对 sub_parts 做同样的事情。然后每个 sub_part 可以存在更多的 sub_parts 等。
所以所需的输出看起来像这样:
输入: full_string = [Part1:“[Part1 的子部分]] 和 [Part2:[Part2 的子部分]] 和 [Part3:[Part3 的子部分]]”
recursive_func(full_string)
输出:
输出:
Part1
sub_part1
sub_sub_part1
sub_sub_part2
sub_sub_partx
sub_partX
sub_sub_part1
sub_sub_part2
...
sub_sub_partx
...
...
...
Part2
sub_part1
sub_sub_part1
sub_sub_part2
sub_sub_partx
PartX
sub_part1
sub_sub_part1
sub_sub_part2
sub_sub_partx
sub_sub_sub_partx
...
所以基本上我只得到第一级输出(Part1,Part2,Part3),我不知道设置这个递归以包含所有 sub_parts(及其 sub_sub_parts 等)的合理方法是什么。
这是我的功能。我用伪代码替换了其中的大部分内容,这样我想做什么就有点清楚了。
def recursive_func(s, result=None, i = 0):
print(i)
if result is None:
result = []
if THERE IS AT LEAST ONE PART LEFT TO BE EXTRACTED IN THE STRING:
EXTRACT ONE PART CALLED f_str
# Append this part to the result
result.append(f_str)
# remove the part from the string
s = s.replace(f_str,"", 1)
return drill_down(s, result, i+1)
# I am thinking that maybe here i would need to start another recursion?
return result
解决方案
推荐阅读
- c# - 为什么 Dictionary.ContainsKey() & ToString() 会导致 GC Alloc?
- php - PHP SimpleXLSX 无法读取 excel(.xlsx) 文件
- python - 使用 Facebook Python Business SDK 使用 remote_create 时出现 TypeError
- r - 使用 R 的多个多边形中的点
- python - 使用 Python 解析 JSON 内容
- html - 自定义或删除离子行之间的空间
- redux - Flutter Redux Navigator GlobalKey.currentState 返回 null
- javascript - 如何使用 reduce 计算多个数组的交集?
- nginx - 如何检查`nginx -s reload`是否成功?
- git - git push 命令中的致命错误