如何用Python从现有词表生成多组指定长度的无重复随机词列表
原有代码问题排查
- 使用
random.choice()抽取元素时支持重复抽取,无法满足同组内词语不重复的要求 - 循环逻辑存在错误:count初始值为0,每次循环自增1,
if count == 0: break的条件永远不会触发,最终生成的列表长度等于原词表长度,不符合单次抽取10个词的需求
实现方案
Python内置的random.sample()方法可以直接实现从序列中无重复的随机抽样,完全匹配你的需求,修改后代码如下:
import random def counterbalance(wordlist, sample_per_group=10, total_group=6): group_list = [] for _ in range(total_group): # 从词表中无重复抽取指定数量的词,生成单组词表 single_group = random.sample(wordlist, k=sample_per_group) group_list.append(single_group) return group_list wordlist = ["Bati", "Uteli", "Foki", "Ipe", "Asemo", "Ragi", "Bilu", "Oga", "Egi", "Tidu", "Pewo", "Elebo", "Dalo", "Bofe","Tari", "Zega", "Atesi", "Teku", "Doza", "Bani"] # 获取生成的6组词表 result_groups = counterbalance(wordlist) # 遍历打印结果 for group_id, words in enumerate(result_groups, 1): print(f"第{group_id}组:{words}")
代码说明
random.sample(序列, k=抽取数量)天然保证返回的k个元素互不重复,不需要额外做去重判断- 函数预留了参数入口,后续如果要调整每组抽取的词数、生成的组数,直接传入对应参数即可,不需要修改函数内部逻辑
内容的提问来源于stack exchange,提问作者Jishdk
相关产品推荐
相关产品推荐

