我有一个有24名学生的班级,我想分别组成6组,每组4名学生。这6个小组每周轮换一次。重要的是,每周没有一个小组将有2名相同的学生。在某些时候它会重新开始...
让我们说学生编号为1到24岁。
第一周的1-2-3-4组和下周的1-2-5-6组是不可接受的,因为他们在同一组中有1名和2名学生。
群组在一周内不能在两个不同的群组中拥有同一个人。同一周内的1-2-3-4和1-5-6-7组是不可接受的。
我怎么能用Python做到这一点?
我尝试过itertools,但我不能让它工作。我得到这样的团体:
第一周:1-2-3-4 下周:1-2-3-5
他们有共同的学生1-2-3 ......
提前谢谢!
答案 0 :(得分:0)
我确信一些聪明的人会带来一个列表理解,它会在一行中执行此操作,但是我认为这是一个嵌套的循环,它会为你做到这一点。
# get the initial set of groups
groups = list(zip(*[iter(range(1,25)] * 4))
def regroup(groups):
j = 0
new_groups = [[],[],[],[],[],[]]
for group in groups:
for item in group:
new_groups[j].append(item)
j = (j + 1) % 6
return new_groups