Pooja Bhalode wrote: > Hi, I wanted to check if this program can be used to merge the lists > together and sort them. This seems to work, but i wanted to check if there > are drawbacks in writing it in this manner.
When you start out lists are the natural datatype to use, but as you get more experienced you'll often switch to generators and iterators. These allow you to defer calculations until they are actually necessary and to reduce memory footprint. For example: >>> import heapq >>> a = range(0, 10**100, 2) >>> b = range(0, 10**100, 7) >>> for item in heapq.merge(a, b): ... print(item) ... if item > 20: ... break ... 0 0 2 4 6 7 8 10 12 14 14 16 18 20 21 A list-based implementation would try to build a list with >>> 10**100//2 + 10**100//7 6428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428 items. CPython can't even determine the length of such a list: >>> len(range(0, 10**100, 2)) Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: Python int too large to convert to C ssize_t Anyway, heapq.merge() is written in Python, so you can easily take a look: https://hg.python.org/cpython/file/737efcadf5a6/Lib/heapq.py#l349 _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor