How to take the first N items from a generator or list in Python?
Question: With [linq](/questions/tagged/linq "show questions tagged 'linq'") I would

    
    
    var top5 = array.Take(5);
    

How to do this with Python?


Answer: # 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()`](http://docs.python.org/library/itertools.html#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)`

