Skip to main content
 首页 » 编程设计

python之如何从两个列表中创建列表列表

2025年05月04日15sharpest

我正在尝试完成以下任务,但到目前为止失败了。我有两个排序的数字列表。说

A = [5.8, 6.5, 7.6, 14.5, 18.1, 25.7, 26.4, 30.7, 30.9, 33.6, 38.6, 38.8, 39.2] 
 
B = [9.0, 13.5, 22.5, 32.3 40.6, 43.2, 47.9, 54.2, 60.3, 63.0] 

我想做一个列表列表。每个列表包含一个与 B 不同的值,以及 A 中介于该 B 值和列表中紧邻它之前的值之间的所有值。第一个列表只包含小于 B 中第一个值的所有内容。

所以在这种情况下,列表的列表应该开始

[[5.8, 6.5, 7.6, 9.0], [13.5], [14.5, 18.1, 22.5], [25.7, 26.4, 30.7. 30.9, 32.3]....] 

如果 numpy 代码更简单/更快,我会很高兴。

我试过:

[[*a, b] for b, a in itertools.groupby(A, lambda x: next(filter(lambda y: y >= x, B)))] 

但它错过了所有单例列表,我不确定它在任何情况下的速度有多快。

请您参考如下方法:

我会像这样使用两个指针,

i = 0 
j= 0 
ans = [] #contains the lists of lists 
while j<len(B): 
    to_append = [] 
    while i<len(A) and A[i]<=B[j]: 
         to_append.append(A[i]) 
         i=i+1 
    to_append.append(B[j]) 
    ans.append(to_append) 
    j=j+1 
 

立即尝试