为了说明背景,我准备了一份“玩家”名单。让我们说
players = ['steve','gary','simon','kevin']
。
我还有一个包含两个子列表的列表,每个子列表中都有一个“领导者”:groups = [['leader1'],['leader2']]
现在,我需要将玩家轮流分配给他们的领导者:
groups = [['leader1','steve','simon'],['leader2','gary','kevin']]
我已经在这项任务上陷入困境相当长一段时间了,非常感谢您的帮助。 另外,请勿进口,谢谢!
我已经尝试了很多不同的方法来解决这个问题,但都无济于事。 以下是我真正充满希望的尝试之一:
for i in range(len(players))
for j in range(len(groups))
groups[j].append(players[i])
回想起来,这当然行不通,但我真的很累(现在仍然是:D)。
您的组存在于索引 0 和 1 处。在两个索引之间交替的一个技巧是用 1 减去每个索引以获得另一个索引。
i = 0
for p in players:
groups[i].append(p)
i = 1 - i # 1 - 0 == 1, 1 - 1 = 0
使用当前的方法作为起点,您不需要嵌套循环。
groups
中使用的索引可以通过对i
进行模运算来确定。 例如:
for i in range(len(players)):
groups[i % len(groups)].append(players[i])
因此玩家 0 进入组 0,玩家 1 进入组 1,玩家 2 进入组 0,等等
或者,您可以对列表进行切片。 例如:
for i in range(len(groups)):
groups[i].extend(players[i::len(groups)])
作为一般建议,您可能会发现包含列出的字典是更容易使用的数据结构。 这些“组”似乎具有两个不同的属性,一个“领导者”值和一个“玩家”值列表。 将它们分开可能是最好的。