Python多列表迭代:动态为玩家分配不重复随机球队
解决方案
核心思路
- 先随机打乱所有球队的顺序,保证分配的随机性
- 动态计算每个玩家应得的球队数
x = 总球队数 // 玩家数 - 按顺序给每个玩家分配前
x支球队,分配后从剩余球队中移除已分配的部分,避免重复
代码实现
import random def assign_teams(all_teams, players): # 复制并打乱球队列表,避免修改原始数据 shuffled_teams = all_teams.copy() random.shuffle(shuffled_teams) # 计算每个玩家分配的球队数量 per_player = len(shuffled_teams) // len(players) # 用字典存储最终分配结果 player_assignments = {} for player in players: # 截取当前玩家的球队 assigned_teams = shuffled_teams[:per_player] # 更新剩余未分配的球队 shuffled_teams = shuffled_teams[per_player:] player_assignments[player] = assigned_teams return player_assignments # 测试示例 All_Teams = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','aa','bb','cc','dd'] Players = ['p1','p2','p3','p4','p5','p6'] # 获取分配结果 assign_result = assign_teams(All_Teams, Players) # 打印结果 for player, teams in assign_result.items(): print(f"{player}: {teams}")
说明
- 玩家数量动态变化时,代码会自动重新计算每个玩家应得的球队数,完全适配场景
- 用
copy()和shuffle()保证原始球队列表不被改动,同时实现随机分配 - 分配过程通过切片实现,简洁高效,避免了繁琐的重复判断和移除操作
内容的提问来源于stack exchange,提问作者ShaneKemp92
相关产品推荐
相关产品推荐

