根据Python中的计数器值将列表拆分为多个子列表

根据Python中的计数器值将列表拆分为多个子列表,python,Python,我似乎找不到答案,但我想根据计数器将列表拆分为多个较小的列表,以便新列表每次都包含相同的最大值 创建一个新的子列表后,我希望继续单步遍历原始列表,根据下一个值创建一个新的子列表 keywordList = ["24/7 home emergency", "6 month home insurance", "access cover", "access insurance", "are gas leaks covered by home insurance", "cen

我似乎找不到答案,但我想根据计数器将列表拆分为多个较小的列表,以便新列表每次都包含相同的最大值

创建一个新的子列表后,我希望继续单步遍历原始列表,根据下一个值创建一个新的子列表

keywordList = ["24/7 home emergency", "6 month home insurance", "access cover", "access insurance",
              "are gas leaks covered by home insurance", "central heating breakdown cover", "trace & access",
              "trace and access", "trace and access costs"]
maxLength = 4

for c, items in enumerate(keywordList):
    if c < maxLength:
        #append items to new list here
keywordList=[“24/7家庭紧急情况”、“6个月家庭保险”、“访问保险”、“访问保险”,
“燃气泄漏是否包含在家庭保险范围内”、“集中供热故障保险范围”、“追踪和访问”,
“跟踪和访问”、“跟踪和访问成本”]
最大长度=4
对于c,枚举中的项(关键字列表):
如果c
预期的输出将是三个新列表,前两个长度为四个元素,最后一个长度为一个元素。但是如果原来的列表突然有100个元素,我们会得到25个新列表


似乎有关于平均分割原始列表的信息,但没有关于预定值的信息。感谢您的帮助。

编辑以反映您当前的问题:

keywordList = ["24/7 home emergency", "6 month home insurance", "access cover", "access insurance",
              "are gas leaks covered by home insurance", "central heating breakdown cover", "trace & access",
              "trace and access", "trace and access costs"]

leng = len(keywordList)
keywordList += [""] * ((leng//4+1)*4 - leng)
result = [[keywordList[i] for i in range(j, j+4)] for j in range(0, leng, 4)]
result[-1] = [e for e in result[-1] if e]
结果

[['24/7 home emergency',
  '6 month home insurance',
  'access cover',
  'access insurance'],
 ['are gas leaks covered by home insurance',
  'central heating breakdown cover',
  'trace & access',
  'trace and access'],
 ['trace and access costs']]

这种方法的思想是用空字符串(可以是任何字符串)将
关键字列表
填充为4的倍数,然后除以4。之后,清除空字符串的最后一个元素(或我们决定表示空对象的任何元素)

如果要将列表分为多个子列表,可以使用以下列表:

from itertools import repeat, zip_longest

l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

iter_l = iter(l)

[list(filter(None.__ne__, i)) for i in zip_longest(*repeat(iter_l, 4))]
# [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15]]

考虑到您的
关键字列表
输入,您的预期输出是什么?我希望输出是:
关键字列表1=[“24/7家庭紧急情况”,“6个月家庭保险”,“访问保险”,“访问保险”]关键字列表2=[“家庭保险”、“中央供暖故障保险”、“跟踪和访问”、“跟踪和访问”是否涵盖气体泄漏关键字列表3=[“跟踪和访问成本”]
重复原始列表中的关键字数量,即如果原始列表中有100个关键字,我们将得到25个子列表。鉴于您不知道
关键字列表的长度,您必须动态生成列表名称。这不是构建Python的目的。完成你想做的事情的最好方法是像已经提供的答案一样。对不起,我不认为问题很清楚,每个新的列表应该有四个元素的长度。所以,如果我们有一个包含100个元素的原始列表,那么最终会有25个新的子列表。这会创建我可以从另一个函数调用的实际的新列表吗?因此,我看到它确实拆分了元素,但理想情况下,我可以根据需要调用新列表,如
newList1 newList2 newList3