You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python多列表迭代:动态为玩家分配不重复随机球队

解决方案

核心思路

  1. 先随机打乱所有球队的顺序,保证分配的随机性
  2. 动态计算每个玩家应得的球队数 x = 总球队数 // 玩家数
  3. 按顺序给每个玩家分配前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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 10:15:32