【发布时间】:2020-05-06 13:36:16
【问题描述】:
我想将每个列表列表拆分为给定长度的子列表。 我有一个 courses 数组,它看起来像这样:
[['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])
但是使用 Output[0] 打印的是连续 4 个列表,所以据我所知,它可能需要 4 对。 schedule 是我希望拆分每个列表的给定长度。我不明白我需要如何循环才能达到我需要的结果。
【问题讨论】:
-
您的源列表的子列表是相同的,是有意的还是您只是将同一个列表粘贴了两次?哦,列表只有 44 项,但
sum(schedule)是 47 - 缺少 3 项吗? -
它们是每个学生都获得的课程,因此它们具有相同的项目,只是顺序不同。例如,如果您在第一个子列表的末尾看到 2 个空项目,而在第二个则有 3 个。但通常有 1500 个子列表。只是这两个太相似了@Błotosmętek
-
您想要的输出与
schedule定义的元素数量不匹配 - 例如,schedule中的第一个数字5对应于您想要的输出中的三元素列表['CS106', 'CS215', 'CS107'].这是一个错字还是你的程序有一些额外的逻辑? -
这是一个错字谢谢您的注意!我现在就改! @jfaccioni