我有一个无序列表,A = [1, 4, 16, 22, 9, 2]
和一个有序列表p = [0, 6, 12]
。
我已经创建了一个列表列表s = [ [] for i in range(n+1)]
.
我想将A
的每个元素与p
中的第一个元素进行比较,然后是第二个元素,依此类推。
如果A's
元素小于p's
元素,我想将其附加到s
中的正确列表中。(所以s
的第一个列表将是空的,因为没有任何东西小于 0,s
中的第二个列表应该容纳 1,4,2。 -- 最终 0 将进入第一个列表,6 进入第二个列表,12 进入第三个列表。第四个列表将包含大于 12 的元素。
(我需要它是通用的并且适用于不同的列表大小,因此A
可以容纳 20 个元素,p
可以容纳 5 个等。
我正在努力将其付诸行动。 请帮忙!
由于p
是排序的,因此您可以使用 bisect 进行排序(复杂性O(log(N))
(:
for a in A:
s[bisect.bisect_left(p, a)].append(a)
外:
[[], [1, 4, 2], [9], [16, 22]]