如何生成指定长度且无相邻同首字母的随机元素列表?
解决相邻元素首字母重复的问题
核心思路
每次生成下一个元素时,把和上一个元素首字母相同的选项全部排除,只从剩下的元素里随机选择,就能保证相邻元素首字母不一样。
可用代码
import random letters = ["A", "AAA", "B", "BBB", "C", "CCC", "D", "DDD", "E", "EEE"] target_length = 14 # 先随机挑第一个元素开个头 groups = [random.choice(letters)] # 循环生成剩下的元素 for _ in range(target_length - 1): # 拿到上一个元素的首字母 last_char = groups[-1][0] # 过滤出首字母和上一个不一样的候选 valid_options = [item for item in letters if item[0] != last_char] # 从候选里随机选一个加进去 groups.append(random.choice(valid_options)) print(groups)
简单说明
- 先随机选第一个元素作为列表的起始
- 后续每一步都根据最后一个元素的首字母筛选候选池,确保新选的元素首字母和前一个不同
- 这样生成的列表完全符合「相邻元素首字母不同」的要求,同时元素可以重复出现
内容的提问来源于stack exchange,提问作者sean
相关产品推荐
相关产品推荐

