<分区>
假设我有一个数字列表,我想将该列表分成两个子列表:一个用于奇数,另一个用于偶数。
evens, odds = [], []
for e in numbers:
if e % 2 == 0:
evens.append(e)
else:
odds.append(e)
我想知道在保持相同复杂度顺序的情况下,是否有针对此问题的单行代码。
我尝试使用 itertools.groupby
但列表需要先排序,所以我会实现 O(2n)
而不是 O(n )
:
def is_even(n):
return n % 2 == 0
lst = sorted(lst, key=is_even)
grouper = itertools.groupby(lst, key=is_even)
lst1, lst2 = [list(v) for k, v in grouper]