我想将每个列表拆分为给定长度的子列表。 我有一个课程数组,如下所示:
[['CS105', 'ENG101', 'MATH101', 'GER', 'ENG102', 'CS230', 'MATH120', 'GER', 'CS205', 'FREE', 'GER', 'CS106', 'CS215', 'CS107', 'ENG204', 'GER', 'MATH220', 'CS300', 'CS206', 'CS306', 'GER', 'FREE', 'CS312', 'CS450', 'GER', 'CS321', 'FREE', 'CS325', 'GER', 'CS322', 'MAJOR', 'CS310', 'STAT205', '', 'CS443', 'CS412', 'CS421', 'GER', 'CS444', 'FREE', 'FREE','','',''], ['CS105', 'ENG101', 'MATH101', 'GER', 'ENG102', 'CS230', 'MATH120', 'GER', 'CS205', 'FREE', 'GER', 'CS106', 'CS215', 'CS107', 'ENG204', 'GER', 'MATH220', 'CS300', 'CS206', 'CS306', 'GER', 'FREE', 'CS312', 'CS450', 'GER', 'CS321', 'FREE', 'CS325', 'GER', 'CS322', 'MAJOR', 'CS310', 'STAT205', '', 'CS443', 'CS412', 'CS421', 'GER', 'CS444', 'FREE', 'FREE','','',''],...]
我想将每个列表拆分为中的子列表,并使其如下所示:
[[['CS105', 'ENG101', 'MATH101', 'GER'],['ENG102', 'CS230', 'MATH120', 'GER'], ['CS205', 'FREE'], ['GER'], ['CS106', 'CS215', 'CS107','ENG204', 'GER'], ['MATH220', 'CS300', 'CS206', 'CS306'], ['GER', 'FREE'], ['CS312'], ['CS450', 'GER', 'CS321', 'FREE', 'CS325'], ['GER', 'CS322', 'MAJOR', 'CS310'], ['STAT205',''], [''], ['CS443', 'CS412', 'CS421', 'GER',''], ['CS444', 'FREE', 'FREE',''],['','']]...]
到目前为止,我所做的工作如下:
schedule = [4, 4, 2, 1, 5, 4, 2, 1, 5, 4, 2, 1, 5, 4, 2, 1]
for i in courses:
Output = [courses[x - y: x] for x, y in zip(accumulate(schedule), schedule)]
print(Output[0])
但是用输出[0]打印的是一行4个列表,所以当我得到它时,可能需要4对schedule是我希望拆分每个列表的给定长度。我无法理解我需要如何循环才能达到我需要的结果
为您准备了一段工作代码:
也许可以做得更快,但这应该做的工作
如果您有任何问题或它工作不正常,请给我写信!希望我能帮忙
这里有一个函数可以满足您的需要:
这里的核心思想是:
schedule
列表,创建要从每个子列表中获取的索引列表李>indices[1:]
),使值成为从每个子列表中选择的开始索引和结束索引李>input_list
和output_list
中的每个子列表李>input_list
复制粘贴到output_list
李>通过传递输入列表和时间表来调用它,如下所示:
由于我在评论中提到的打字错误,结果与您期望的输出不完全相同,但我相信它能满足您的需求
您最初使用
itertools.accumulate
的想法实际上相当不错,您只是犯了一些小错误:相关问题 更多 >
编程相关推荐