Question: What is typically regarded as more Pythonic/better/faster to use, the reverse method or the reversed built-in function? 

Both in action:

```
_list = list(xrange(4))

print _list

rlist = list(reversed(_list))

print rlist

_list.reverse()

print _list

```

Answer: 
There seems to be a great difference. I really thought it's the other way round.
Why is rearranging the values in a list faster than creating a new one from an iterator ?

```
from decorators import bench

_list = range(10 ** 6)

@ bench
def foo():
  list(reversed(_list))

@ bench
def bar():
  _list.reverse()

foo()
bar()

print foo.time
print bar.time

```

> 
> 0.167278051376   
> 
>  0.0122621059418
> 
> 
>
* \_list.reverse() does an in-place reversal and does not return a value
* reversed(\_list) does not change \_list, but returns a reverse iterable
object
* \_list[::-1] does not change \_list, but returns reversed slice

example:

```
_list = [1,2,3]
ret1 = list(reversed(_list))
ret2 = _list[::-1] #reverse order slice
ret3 = _list.reverse() #no value set in ret3
print('ret1,ret2,ret3,_list:',ret1,ret2,ret3,_list)

_list = [1,2,3]
for x in reversed(_list):
    print(x)

```

output:

```
ret1,ret2,ret3,_list: [3, 2, 1] [3, 2, 1] None [3, 2, 1]
3
2
1

```