Python中的课堂分组

时间:2014-09-18 21:12:31

标签: python

我有一个有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 ......

提前谢谢!

1 个答案:

答案 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