我的列表中有一些值
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]第二个子列表3将是起始索引,第4个子列表将是结束索引,因此第二个子列表将是[51],对于第三个子列表,起始索引将是4,结束索引将是5,因此第三个子列表会[89]。最后我的名单应该是这样的
C=[[11,20,30,40],[51],[89]]
答案 0 :(得分:1)
您可以尝试以下方法:
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]]
答案 1 :(得分:0)
你可以试试这个:
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)]