First of all, here is a good cheat sheet for time-complexity of various operations in Python.
Given your last reply to my statement, I assume you want to consume and split given list into three separate lists without creating any intermediate lists via comprehensions. One way to accomplish this would be changing your data structure to collections.deque
as list.remove()
takes O(n)
(because it requires shifting elements) whereas deque.popleft()
takes O(1)
.
>>> def partition(queue):
... partition1, partition2, partition3 = [], [], []
... while queue:
... ele = queue.popleft()
... if 0 < ele <= 3:
... partition1.append(ele)
... elif 3 < ele <= 6:
... partition2.append(ele)
... else:
... partition3.append(ele)
... return partition1, partition2, partition3
>>> import collections
>>> p1, p2, p3 = partition(collections.deque(range(10)))
>>> print p1
[1, 2, 3]
>>> print p2
[4, 5, 6]
>>> print p3
[0, 7, 8, 9]