Search code examples
pythonlistgenerator

How to take the first N items from a generator or list?


With I would

var top5 = array.Take(5);

How to do this with Python?


Solution

  • Slicing a list

    top5 = array[:5]
    
    • To slice a list, there's a simple syntax: array[start:stop:step]
    • You can omit any parameter. These are all valid: array[start:], array[:stop], array[::step]

    Slicing a generator

    import itertools
    top5 = itertools.islice(my_list, 5) # grab the first five elements
    
    • You can't slice a generator directly in Python. itertools.islice() will wrap an object in a new slicing generator using the syntax itertools.islice(generator, start, stop, step)

    • Remember, slicing a generator will exhaust it partially. If you want to keep the entire generator intact, perhaps turn it into a tuple or list first, like: result = tuple(generator)