使用python根据另一个列表中的值对列表中的值进行分组,从而创建列表列表

使用python根据另一个列表中的值对列表中的值进行分组,从而创建列表列表,python,for-loop,indexing,grouping,sublist,Python,For Loop,Indexing,Grouping,Sublist,我有一个列表,它有一些值 A=[3,4,5] 我有另一个列表,其中有一些值,如下所示 B=[11,20,30,40,51,89,50,36,29,90,48,94,45,67,34] 我想创建一个名为C的新列表,其中包含子列表,其中每个子列表将根据列表a中的值创建。列表a中的值将作为每个子列表的结束索引 c=[] for i in range(len(A)): print A[i] for x in range(0,len(B),A[i]): c.append

我有一个列表,它有一些值

A=[3,4,5]
我有另一个列表,其中有一些值,如下所示

B=[11,20,30,40,51,89,50,36,29,90,48,94,45,67,34]
我想创建一个名为C的新列表,其中包含子列表,其中每个子列表将根据列表a中的值创建。列表a中的值将作为每个子列表的结束索引

c=[]
for i in range(len(A)):
    print A[i]
    for x in range(0,len(B),A[i]):
        c.append(B[x:x+A[i]])
但我的问题是,它只获取列表A的最后一个值,并根据它进行分组。如何确保使用列表A中的所有值来创建包含子列表的列表c

它生成如下输出

[[11, 20, 30, 40, 51], [89, 50, 36, 29, 90], [48, 94, 45, 67, 34]]
但我需要

[[11, 20, 30, 40], [51], [89]]
我想实现这一点。我想根据列表A中的值对子列表进行分组,因此0将是第一个子列表的起始索引,3将是结束索引,即[11,20,30,40],对于第二个子列表,3将是起始索引,4将是结束索引,所以第二个子列表将是[51],对于第三个子列表,起始索引为4,结束索引为5,所以第三个子列表为[89]。因此,最后我的列表应该如下所示

C=[[11,20,30,40],[51],[89]]
您可以尝试以下方法:

A=[3,4,5]


B=[11,20,30,40,51,89,50,36,29,90,48,94,45,67,34]


new_list = [B[:a+1] if i == 0 else [B[a]] for i, a in enumerate(A)]

您可以尝试以下方法:

A = [3,4,5]
B = [11,20,30,40,51,89,50,36,29,90,48,94,45,67,34]

C = []
for k,v in enumerate(A):
    C.append(B[k:v+1] if k == 0 else B[A[k-1]+1:v+1])

print(C)
输出:

[[11, 20, 30, 40], [51], [89]]

我缩进了第二个for循环,以实际利用
I
。我的输出与您的不匹配:
[[11,20,30],[40,51,89],[50,36,29],[90,48,94],[45,67,34],
I如果我理解正确,根据您的要求,不应该是所需的列表,而是由3,4,5个元素组成的组,而不是由4,5,6个元素组成的组?A=[3,4,5]此列表表示结束索引,我们应该用它来框架子列表忽略我的上述问题。我想实现这一点。我想根据列表A中的值对子列表进行分组,因此0将是第一个子列表的起始索引,3将是结束索引,即[11,20,30,40],对于第二个子列表,3将是起始索引,4将是结束索引,所以第二个子列表将是[51],对于第三个子列表,起始索引是4,结束索引是5,所以第三个子列表是[89]。因此,最后我的列表应该是这样的C=[[11,20,30,40],[51],[89]],非常感谢!!这就是我要找的。如果我的列表B是[11,20,30,40,“结束”,51,“结束”,89,“结束”,50,36,29,90,48,94,45,67,34],该怎么办。我想删除那些结束字符串,但仍然应该得到相同的输出???@user1681102,过滤掉“结束”字符串
B=[v表示B中的v,如果存在(v,int)]