我有两个列表
All_Teams=[a,b,c,d,e…]#有30个项目
玩家=[p1,p2,p3,p4,p5,p6]#目前有6个项目,但这将是不同的
在本例中,我想为每个玩家分配x个随机团队,其中x=所有团队/玩家(本例中为5(。但一旦一支球队被分配给一名球员,就不能再分配给另一名球员。
我通过做以下事情,用一种冗长的方式解决了这个问题:
Player1_List=所有流
Player1_Teams=随机样本(Player1_List,5(
Player2_List=[如果团队不在Player1_Teams中,则所有团队中的团队对应团队]
Player2_Teams=随机样本(Player2_List,5(
并对6名玩家重复此过程。
打印(播放器#_Teams(
但我想简化它,这样它就可以为不断变化的玩家循环使用。
我从开始
def assigning_tams((:
for player in Players:
print (player)
但后来我陷入了困境,因为我知道我无法更改正在迭代的列表。
提前谢谢,一个蟒蛇新手。
打乱All_Teams
列表,将其拆分为x
部分,然后就有了它,每个玩家的组:
import random
All_Teams = [i for i in range(30)]
Players = ['p1', 'p2', 'p3', 'p4', 'p5', 'p6']
assert len(All_Teams) % len(Players) == 0
x = int(len(All_Teams) / len(Players))
random.shuffle(All_Teams)
players_teams = {Players[i]:All_Teams[i*x:(i+1)*x] for i in range(x)}
其产生例如:
{'p1': [2, 16, 10, 9, 17],
'p2': [6, 1, 19, 0, 8],
'p3': [21, 29, 24, 15, 4],
'p4': [26, 14, 28, 11, 20],
'p5': [23, 5, 12, 22, 13]}