使用 python 根据另一个列表中的值对列表中的值进行分组来创建列表列表
create lists of lists by grouping values in a list based on values in another list using python
我有一个包含一些值的列表
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]]
我想实现 this.I 想根据列表 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]]
我有一个包含一些值的列表
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]]
我想实现 this.I 想根据列表 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]]