2014-09-18 94 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