繁体   English   中英

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

[英]List elements not nesting after using itertools combinations function?

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

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

以上是我最接近创建所需列表的尝试之一,但 output 是这样的:

['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 中的 function。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM