Best way to create a reversed list in Python?
newlist = oldlist[::-1]
The [::-1]
slicing (which my wife Anna likes to call "the Martian smiley";-) means: slice the whole sequence, with a step of -1, i.e., in reverse. It works for all sequences.
Note that this (and the alternatives you mentioned) is equivalent to a "shallow copy", i.e.: if the items are mutable and you call mutators on them, the mutations in the items held in the original list are also in the items in the reversed list, and vice versa. If you need to avoid that, a copy.deepcopy
(while always a potentially costly operation), followed in this case by a .reverse
, is the only good option.
How do I reverse a list or loop over it backwards?
To get a new reversed list, apply the reversed
function and collect the items into a list
:
>>> xs = [0, 10, 20, 40]
>>> list(reversed(xs))
[40, 20, 10, 0]
To iterate backwards through a list:
>>> xs = [0, 10, 20, 40]
>>> for x in reversed(xs):
... print(x)
40
20
10
0
Traverse a list in reverse order in Python
Use the built-in reversed()
function:
>>> a = ["foo", "bar", "baz"]
>>> for i in reversed(a):
... print(i)
...
baz
bar
foo
To also access the original index, use enumerate()
on your list before passing it to reversed()
:
>>> for i, e in reversed(list(enumerate(a))):
... print(i, e)
...
2 baz
1 bar
0 foo
Since enumerate()
returns a generator and generators can't be reversed, you need to convert it to a list
first.
How to reverse a list without modifying the original list in Python
you need to make a copy of your list
L=[1,2,3]
# R=L
R = L[:]
L.reverse()
or more directly (reversing using slice notation):
R = L[::-1]
if you just write R = L
then R
is just a new reference on the same list L
.
if you also need to copy the elements in your list, use copy.deepcopy
; R = L[:]
only produces a shallow copy (which is fine in your case where there are only int
s in the list).
Print a list in reverse order with range()?
use reversed()
function:
reversed(range(10))
It's much more meaningful.
Update:
If you want it to be a list (as btk pointed out):
list(reversed(range(10)))
Update:
If you want to use only range
to achieve the same result, you can use all its parameters. range(start, stop, step)
For example, to generate a list [5,4,3,2,1,0]
, you can use the following:
range(5, -1, -1)
It may be less intuitive but as the comments mention, this is more efficient and the right usage of range for reversed list.
Python reverse list
.reverse()
returns None
. Therefore you should not be assigning it to a variable.
Use this instead:
stra = 'This is a string'
revword = stra.split()
revword.reverse()
revword=''.join(revword)
I've run the code on IDEOne for you so you can see the output. (Also notice that the output is stringaisThis
; you may want to use ' '.join(revword)
, with a space, instead.)
Also note that the method you have provided only reverses the words, not the text. @ron.rothman provided a link that does detail how to reverse a string in its entirety.
How to reverse a list of lists in python?
In [24]: L = [[1,2,3],[4,5,6],[7,8,9]]
In [25]: L[::-1]
Out[25]: [[7, 8, 9], [4, 5, 6], [1, 2, 3]]
creating a reverse method for a python list from scratch
You are changing the list that you iterate on it (data_list) because of that it's not working , try like this:
def reverse(data_list):
length = len(data_list)
s = length
new_list = [None]*length
for item in data_list:
s = s - 1
new_list[s] = item
return new_list
How do I reverse a part (slice) of a list in Python?
a[2:4]
creates a copy of the selected sublist, and this copy is reversed by a[2:4].reverse()
. This does not change the original list. Slicing Python lists always creates copies -- you can use
b = a[:]
to copy the whole list.
Related Topics
How to Select All Columns Whose Names Start with X in a Pandas Dataframe
Certificate Verify Failed: Unable to Get Local Issuer Certificate
Installing Python Packages Without Internet and Using Source Code as .Tar.Gz and .Whl
How to Save and Load Numpy.Array() Data Properly
A Logarithmic Colorbar in Matplotlib Scatter Plot
How to Convert List of Key-Value Tuples into Dictionary
Python-Requests Close Http Connection
Convert Variable Name to String
Add Column to Dataframe with Constant Value
How to Check If Code Is Executed in the Ipython Notebook
Checking If All Elements in a List Are Unique
Interpolate Nan Values in a Numpy Array
Pandas: Looking Up the List of Sheets in an Excel File
How to Use Pip to Install a Package from a Private Github Repository