使用 itertools 组合函数后列表元素不嵌套?

List elements not nesting after using itertools combinations function?

无可否认,我是一个非常缺乏经验的程序员,他的任务是创建一个 Python 程序,该程序将根据其他学生做出的四种选择(他们会选择 3 名学生)将学生分类到酒店房间喜欢。我正在使用一种非常初级的方法,因为我没有时间也没有能力创建更高级的代码。 这当然是来自初学者的问题,但我一直在尝试使用 itertools.combinations() 函数来创建长度为 4 的所有可能学生组的列表。要执行我的程序的以下步骤,我需要这些 4 名学生(每组)的列表中的每一个都在一个更大的列表中。到目前为止我所尝试的一切都不起作用,我对以下代码的计划依赖于创建一个嵌套的 4 组列表。

for comb in itertools.combinations(names, 4):
    combs = []
    for list in comb:
       combs.append(list)
    print(combs)

以上是我最接近创建我想要的列表的尝试之一,但输出是这样的:

['Destinee', 'Dahlia', 'Rylie', 'Lauryn']
['Destinee', 'Dahlia', 'Rylie', 'Katelynn']
['Destinee', 'Dahlia', 'Rylie', 'Alondra']
['Destinee', 'Dahlia', 'Rylie', 'Amber']
['Destinee', 'Dahlia', 'Rylie', 'Diya']
['Destinee', 'Dahlia', 'Rylie', 'Delilah']
['Destinee', 'Dahlia', 'Rylie', 'Jazlyn']
['Destinee', 'Dahlia', 'Rylie', 'Alexus']
['Destinee', 'Dahlia', 'Rylie', 'Alissa']
['Destinee', 'Dahlia', 'Rylie', 'Alma']
['Destinee', 'Dahlia', 'Rylie', 'India']
['Destinee', 'Dahlia', 'Rylie', 'Kyla']
['Destinee', 'Dahlia', 'Rylie', 'Macy']

(这样持续了一段时间)。 如何将这些单独的列表中的每一个都放在一个更大的列表中?

import itertools
large_list = []
for comb in itertools.combinations(names, 4):
    #combs = [] # this line is not needed
    #for list in comb:
       #combs.append(list) # neither is this one, if you print comb it is already a list
    large_list.append(comb)
    print(combs)

names = ['Peter', 'John', 'Angela', 'Jim', 'Derek', 'Gabriella']
combs = list(itertools.combinations(names, 4))
'''
combs :
[('Peter', 'John', 'Angela', 'Jim'),
 ('Peter', 'John', 'Angela', 'Derek'),
 ('Peter', 'John', 'Angela', 'Gabriella'),
 ('Peter', 'John', 'Jim', 'Derek'),
 ('Peter', 'John', 'Jim', 'Gabriella'),
 ('Peter', 'John', 'Derek', 'Gabriella'),
 ('Peter', 'Angela', 'Jim', 'Derek'),
 ('Peter', 'Angela', 'Jim', 'Gabriella'),
 ('Peter', 'Angela', 'Derek', 'Gabriella'),
 ('Peter', 'Jim', 'Derek', 'Gabriella'),
 ('John', 'Angela', 'Jim', 'Derek'),
 ('John', 'Angela', 'Jim', 'Gabriella'),
 ('John', 'Angela', 'Derek', 'Gabriella'),
 ('John', 'Jim', 'Derek', 'Gabriella'),
 ('Angela', 'Jim', 'Derek', 'Gabriella')]

只需将组合列表添加到 large_list,它会保存所有组合。

或者您可以使用 list(itertools.combinations(names, 4)),这也会生成一个大列表。

ps 永远不要使用 list 作为变量名,list 是 python.[=15= 中的一个函数]