python - 如何在 Python 中使用递归拆分字符串?
问题描述
我想问如何创建一个递归函数,该函数为每个字符拆分列表中包含的每个字符串,每次重复该过程时从头删除一个。我也想这样做,但每次都从末尾删除一个字母。例如,如果我有类似的东西:
list=['house','cat','dog']
我应该得到
['house','ouse','use','se','e','cat','at','t','dog','og','g']
和
['house','hous','hou','ho','h','cat','ca','c','dog','do','d']
我试图这样做,但它不起作用;另外,它应该是递归的......提前谢谢你。
def substring(stringslist):
final=[]
for string in stringslist:
if len(string)==1:
return final.append(string)
else:
return final.append(substring(string[::-1]))
解决方案
使用生成器可以实现更直接的实现 - 您只需将结果转换为list()
.
lst=['house','cat','dog']
def substring(string, reversed=False):
if string: # if string is not zero-length:
yield string # yield its full length
yield from substring(string[:-1] if reversed else string[1:]) # and recurse
def substrings(stringslist, reversed=False):
for string in stringslist:
yield from substring(string, reversed)
>>> list(substrings(lst))
['house', 'ouse', 'use', 'se', 'e', 'cat', 'at', 't', 'dog', 'og', 'g']
>>> list(substrings(lst, reversed=True))
['house', 'hous', 'ous', 'us', 's', 'cat', 'ca', 'a', 'dog', 'do', 'o']
推荐阅读
- sql - 在创建相关实体时是否应该更新实体的版本以避免并发问题?
- javascript - 套接字 API 调用但未在控制台 SOCKET.IO 上获得结果
- python - Python Json 获取键值
- java - 有没有可以生成代码注释或结构的eclipse插件?
- java - 如何在 SQS 上将重试延迟 4 小时?
- python - 我可以在 vscode jupyter notebook 中更改熊猫数据框的外观吗?
- kotlin - 如何在 Kotlin 中编写声明供应商?
- node.js - NodeJS 在多个 Node-Schedule 作业中运行多个 fetch 请求
- python - 如何设置默认屏幕 tkinter 不是全屏?
- python - 蛇头不动