使用多个列表的列表迭代



我有两个列表

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]}

相关内容

  • 没有找到相关文章

最新更新