我正在尝试将已排序的整数列表拆分为两个列表。第一个列表将包含以下所有整数n,第二个列表将包含所有以上整数n。请注意,n不一定要在原始列表中。
我可以轻松地做到这一点:
under = []
over = []
for x in sorted_list:
if x < n:
under.append(x)
else
over.append(x)
Run Code Online (Sandbox Code Playgroud)
但似乎应该可以以更优雅的方式执行此操作,因为知道列表已排序。从itertoolstakewhile来看,这听起来像是解决方案,但随后我会迭代列表两次。dropwhile
从功能上来说,我能做的最好的就是:
i = 0
while sorted_list[i] < n:
i += 1
under = sorted_list[:i]
over = sorted_list[i:]
Run Code Online (Sandbox Code Playgroud)
但我什至不确定它是否真的比仅仅迭代列表两次更好,而且绝对不是更优雅。
我想我正在寻找一种方法来获取返回的列表takewhile和剩余的列表,也许,成对出现。