user2572329 user2572329 - 6 months ago 12
Python Question

How can I reverse a section of a list using a loop in Python?

I'm in need of a little help reversing a section of a list in Python using a loop.

I have a list:

mylist = ['a', 'b', 'c', 'd', 'e', 'f']


Also have an index number, this number will tell where to start the reversing. For example, if the reverse-index number is 3, it needs to be something like this:
['d', 'c', 'b', 'a', 'e', 'f']


What I currently have:

def list_section_reverse(list1, reverse_index):
print("In function reverse()")

n_list = []

for item in range( len(list1) ):
n_list.append( (list1[(reverse_index - 1) - item]) )
item += 1
return n_list

mylist = ['a', 'b', 'c', 'd', 'e', 'f']
print( list_section_reverse(mylist, 3) )


Which returns
['c', 'b', 'a', 'f', 'e', 'd']


How can I alter my code, so that it prints out
['d', 'c', 'b', 'a', 'e', 'f']
?

Answer

Is it allowed to make a copy of the list?

def list_section_reverse(list1, reverse_index):
    print("In function reverse()")

    n_list = [ element for element in list1 ]

    for item in range( reverse_index + 1 ):
        n_list[ item ] = list1[ reverse_index - item ]
        item += 1

    return n_list

mylist = ['a', 'b', 'c', 'd', 'e', 'f']
print(list_section_reverse(mylist, 3))

Outs:

In function reverse()
['d', 'c', 'b', 'a', 'e', 'f']