如何解决Python脚本生成重复句子的问题?
解决重复句子生成问题的修正方案
你的代码存在几个关键逻辑错误,导致无法生成完全不重复的句子:
- 初始时将空字符串加入
sentence_list,引入无效数据 while循环仅检查当前句子与前一句是否相同,未覆盖所有已生成句子的查重- 生成新句子时仅尝试一次,未循环直到找到唯一句子
- 存在拼写错误:
prevoius_sentence应为previous_sentence - 全局变量的使用增加了代码复杂度,逻辑分支混乱
以下是修正后的代码,采用集合存储已生成句子(集合的成员查询效率远高于列表),确保所有生成的句子唯一:
import random def generate_unique_sentences(count): names = ["x", "y", "z"] descriptions = ["a", "b", "Dc"] used_sentences = set() sentences = [] while len(sentences) < count: name = random.choice(names) desc = random.choice(descriptions) new_sentence = f"{name} is a {desc}" if new_sentence not in used_sentences: used_sentences.add(new_sentence) sentences.append(new_sentence) return sentences # 注意:当前词库最多只能生成3*3=9种不同句子,超过9个会进入无限循环 for sentence in generate_unique_sentences(9): print(sentence)
关键改进说明:
- 集合存储已生成句子:集合的
in操作时间复杂度为O(1),比列表的O(n)更高效,适合频繁查重场景 - 循环生成直到满足数量要求:每次生成新句子后检查是否已存在,仅当唯一时才加入结果列表
- 封装变量逻辑:将所有相关变量封装在函数内部,代码更清晰、可维护
- 明确词库上限:你的名字和描述组合最多只能生成9种不同句子,若需要更多句子,需扩充
names或descriptions列表
内容的提问来源于stack exchange,提问作者EnXan
相关产品推荐
相关产品推荐

