Benjamin Hodgson - 1 year ago 156

Python Question

Possible Duplicate:

Only index needed: enumerate or (x)range?

Which of these would be considered better/clearer/faster/more 'Pythonic'? I don't care about the content of the list

`L`

`a = [f(n) for n, _ in enumerate(L)]`

or

`a = [f(n) for n in range(len(L))]`

If it makes any difference, the function

`f`

`len(list)`

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

Some quick timing runs seem to give the 2nd option using `range()`

a slight edge over `enumerate()`

:

```
timeit a = [f(n) for n, _ in enumerate(mlist)]
10000 loops, best of 3: 118 us per loop
timeit a = [f(n) for n in range(len(mlist))]
10000 loops, best of 3: 102 us per loop
```

and just for fun using `xrange()`

(Python v2.7.2)

```
timeit a = [f(n) for n in xrange(len(mlist))]
10000 loops, best of 3: 99 us per loop
```

I would favor *readable code first*, then using `xrange()`

if available (i.e., Pre-Python v 3.x), followed by `range()`

and `enumerate()`

.

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**