如何让Python随机字符串生成器生成不重复的字符串
解决随机字符串重复问题
要确保生成的字符串彼此不重复,你可以用一个集合来记录已经生成过的字符串——集合的特性是自动去重且查询效率极高,非常适合这个场景。
修改后的代码如下:
import random import string target = input("What's your text? ").lower() target_len = len(target) generated = set() # 存储已生成的字符串,避免重复 while True: letters = string.ascii_lowercase result_str = ''.join(random.choice(letters) for _ in range(target_len)) # 检查是否已生成过,是则跳过本次循环重新生成 if result_str in generated: continue # 未重复则加入集合并打印 generated.add(result_str) print(result_str) # 匹配目标字符串时终止循环 if result_str == target: break
关键说明:
- 使用
set()存储已生成的字符串,每次生成新字符串后先检查是否在集合中,避免重复输出。 - 集合的
in操作时间复杂度为O(1),即使生成大量字符串也不会明显降低效率。 - 移除了冗余的
repeat变量,直接用while True配合break终止循环,代码更简洁。
内容的提问来源于stack exchange,提问作者ArthurIsNo
相关产品推荐
相关产品推荐

