我想把一个排序好的整数列表分成两个列表。第一个列表包含所有小于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
返回的列表和剩余的列表。