Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

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

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]

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]

[7, 5, 3, 1]

list2 = [1, 2, 3, 4, 5, 6, 7, 8]
[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
221,324 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.