user11563547
user11563547

Reputation:

How to reorder a python list backwards starting with the 0th element?

I'm trying to go through a list in reverse order, starting with the -0 indexed item (which is also the 0th item), rather than the -1 indexed item, so that I'll now have the new list to use. I've come up with two ways to do this, but neither seems both concise and clear.

a_list = [1, 2, 3, 4, 5]

print(a_list[:1] + a_list[:0:-1])    # take two slices of the list and add them
# [1, 5, 4, 3, 2]

list_range = range(-len(a_list)+1,1)[::-1]    # create an appropriate new index range mapping
print([a_list[i] for i in list_range])        # list comprehension on the new range mapping
# [1, 5, 4, 3, 2]

Is there a way in python 3 to use slicing or another method to achieve this more simply?

Upvotes: 3

Views: 103

Answers (3)

TheLazyScripter
TheLazyScripter

Reputation: 2665

Shift everything left by one and reverse.

my_list.append(my_list.pop(0))
print my_list[::-1]

Upvotes: 1

lenik
lenik

Reputation: 23528

If you are up for a programming golf:

>>> a_list = [1, 2, 3, 4, 5]
>>> [a_list[-i] for i in range(len(a_list))]
[1, 5, 4, 3, 2]

Upvotes: 5

mackorone
mackorone

Reputation: 1066

I think your first suggestion is the cleanest way of doing this. If you're really optimizing for character count, you can remove two characters from the first slice:

print(a_list[:1] + a_list[:0:-1])

Upvotes: 1

Related Questions