如何排除列表中已选元素,实现全列表的随机分组处理?
实现列表元素无重复随机分组(每组最多3个元素)
你当前用random.choices()的代码是有放回抽样,会出现重复选中的情况。要实现无重复、全遍历的随机分组(每组最多3个元素,14个元素最后一组剩2个),可以采用先打乱列表再切片拆分的思路,既保证随机性,又不会重复选取元素。
完整代码
import random myList = ['TGJG78', 'Y7ITHL', 'VHZK0C', '288C13', 'W1JKEK', 'JQ55C9', 'M1BN3S', 'G5B3YF', 'MW1RJ9', 'CS9PZ6', '9LJ3IY', 'XLAMG0', 'BGWN3L', 'SL2BSX'] # 共14个元素 # 随机打乱列表顺序,确保分组的随机性 random.shuffle(myList) # 按每组3个拆分列表,自动处理最后一组的剩余元素 groups = [] for i in range(0, len(myList), 3): current_group = myList[i:i+3] groups.append(current_group) print(f"当前选中组: {current_group}") # 输出最终所有分组结果 print("\n全部分组:") for group_num, group in enumerate(groups, start=1): print(f"第{group_num}组: {group}")
代码说明
random.shuffle(myList):直接修改原列表,将元素顺序随机打乱,这是实现无重复随机分组的核心前提range(0, len(myList), 3):从索引0开始,每次步长为3遍历列表,确保每次取连续的3个元素;最后一次如果不足3个,会自动取剩余的所有元素- 最终得到的
groups列表就是所有无重复的随机分组,每组最多包含3个元素
内容的提问来源于stack exchange,提问作者Drew Duazeh
相关产品推荐
相关产品推荐

