## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

# 19.2. Building a List from Any Iterable

Credit: Tom Good, Steve Alexander

## Problem

You have an iterable object `x` (it might be a sequence or any other kind of object on which you can iterate, such as an iterator, a `file`, a `dict`) and need a `list` object `y`, with the same items as `x` and in the same order.

## Solution

When you know that iterable object `x` is bounded (so that, e.g., a loop `for` ```item in``` `x` would surely terminate), building the list object you require is trivial:

`y = list(x)`

However, when you know that `x` is unbounded, or when you are not sure, then you must ensure termination before you call `list`. In particular, if you want to make a list with no more than `n` items from `x`, then standard library module `itertools`' function `islice` does exactly what you need:

```import itertools
y = list(itertools.islice(x, N))```

## Discussion

Python's generators, iterators, and sundry other iterables, are a wondrous thing, as this entire chapter strives to point out. The powerful and generic concept of iterable is a great way to represent all sort of sequences, including unbounded ones, in ways that can potentially save you huge (and even infinite!) amounts of memory. With the standard library module `itertools`, generators you can code yourself, and, in Python 2.4, generator expressions, you can perform many manipulations on completely general iterables.

However, once in a while, you need to build a good old-fashioned full-fledged `list` object from such a generic iterable. For example, building a list is the simplest ...

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required