2014-09-18 95 views
-2

我有一个班,有24名学生,我想每组6个学生。这6个小组将每周轮换一次。每个小组都不会有两个同样的学生,这很重要。在某些时候,它会重新开始,当然...Python中的课堂分组

比方说,学生编号为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

你想喝什么?这6个小组每周都会轮换? – Kasramvd 2014-09-18 21:19:19

+0

这是至关重要的吗?为什么不只是'random.shuffle'并且接受四人组? – jonrsharpe 2014-09-18 21:22:18

+0

分享您迄今为止编写的代码。 – Celeo 2014-09-18 22:06:16

回答

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