【发布时间】:2022-08-09 11:01:06
【问题描述】:
我试图将排序的整数列表拆分为两个列表。第一个列表将包含n 下的所有整数,第二个列表将包含n 上的所有整数。请注意,n 不必在原始列表中。
我可以很容易地做到这一点:
under = []
over = []
for x in sorted_list:
if x < n:
under.append(x)
else
over.append(x)
但似乎应该可以以更优雅的方式执行此操作,因为知道列表已排序。来自itertools 的takewhile 和dropwhile 听起来像是解决方案,但我会重复列表两次。
从功能上讲,我能做的最好的就是:
i = 0
while sorted_list[i] < n:
i += 1
under = sorted_list[:i]
over = sorted_list[i:]
但我什至不确定它是否真的比只遍历列表两次更好,而且它绝对不是更优雅。
我想我正在寻找一种方法来获取takewhile 返回的列表和剩余的列表,也许是成对的。
-
更好地使用二进制搜索来查找索引
标签: python list split sortedlist