Python生成器开发疑问:如何实现循环嵌套的Mary字符串生成逻辑
解决Python生成器实现嵌套循环字符串的问题
观察你需要的输出,能总结出明确的规律:
- 初始输出:
I love Mary - 后续每一句都是交替用
Mary love that和I love that作为前缀,拼接上一次生成的完整句子
基于这个规律,可以写出如下生成器代码:
def Mary(): # 初始句子 current_sentence = "I love Mary" yield current_sentence # 交替使用的前缀 prefixes = ["Mary love that ", "I love that "] prefix_idx = 0 # 无限循环生成(若要限制次数,可替换为for循环) while True: current_sentence = prefixes[prefix_idx] + current_sentence yield current_sentence # 切换前缀索引,实现交替 prefix_idx = 1 - prefix_idx
测试生成器的效果:
gen = Mary() print(next(gen)) # 输出: I love Mary print(next(gen)) # 输出: Mary love that I love Mary print(next(gen)) # 输出: I love that Mary love that I love Mary print(next(gen)) # 输出: Mary love that I love that Mary love that I love Mary
代码说明:
- 先输出初始的基础句子
- 通过
prefix_idx在两个前缀之间切换,每次用当前前缀拼接上一句的内容,生成新句子后yield - 使用
while True可以无限生成嵌套句子,如果你需要限制生成次数,把while True改成for _ in range(你要的次数)即可
内容的提问来源于stack exchange,提问作者Dani_lucifer923
相关产品推荐
相关产品推荐

