Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python Python Collections (2016, retired 2019) Slices Slice Functions

Am i missing something with this

My exercise is returning the expected output but the check seems to be failing. Please help with what may be missing

slices.py
def first_4(listA):

    return listA[:4]


def first_and_last_4(listB):
    return listB[:4] + listB[-4:]


def odds(listC):
    return listC[1::2]


def reverse_evens(listD):
    listD= listD[::-1]
    return(listD[::2])

I think I know the issue you're having - is it with the last function by any chance? I made a basic error with that one the first go I had at it - my function didn't check whether the last index was odd or even, it just took that last index and iterated (backwards) from there.

My first code looked something like:

def reverse_evens (input):
    return input[::-2] 

which does exactly the same thing as your reverse_evens function. If the list I passed in to the function contained an odd number of items, it worked fine! But if the list had an even number, I was instead returning the odd-indexed items.

list1 = [1, 2, 3, 4, 5, 6, 7]

print(reverse_evens(list1))
[7, 5, 3, 1]

list2 = [1, 2, 3, 4, 5, 6, 7, 8]
print(reverse_evens(list2)
[8, 6, 4, 2]

How do you think you could add the % modulus operand to your function, to check whether the last index is even or odd, and start at the correct index accordingly?

2 Answers

Steven Parker
Steven Parker
231,269 Points

You're close, and your function should work already half of the time, based on the size of the list.

To make sure it works in all cases, try getting the even indexed items first, and then reversing them.

Thanks. I did not run through all the possible cases for the size of the list.