PYTHON:尝试将元素交替地从列表划分到另一个列表中的两个已存在的子列表。请不要进口

问题描述 投票:0回答:2

为了说明背景,我准备了一份“玩家”名单。让我们说

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)。

python list divide
2个回答
0
投票

您的组存在于索引 0 和 1 处。在两个索引之间交替的一个技巧是用 1 减去每个索引以获得另一个索引。

i = 0
for p in players:
  groups[i].append(p)
  i = 1 - i  # 1 - 0 == 1, 1 - 1 = 0

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

作为一般建议,您可能会发现包含列出的字典是更容易使用的数据结构。 这些“组”似乎具有两个不同的属性,一个“领导者”值和一个“玩家”值列表。 将它们分开可能是最好的。

© www.soinside.com 2019 - 2024. All rights reserved.