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

Ben Hedgepeth
seal-mask
.a{fill-rule:evenodd;}techdegree
Ben Hedgepeth
Python Web Development Techdegree Student 10,287 Points

Slicing even indexes in a list

Please refer to the reverse_evens function. I wrote an if statement to evaluate whether the length of the iterable is even or odd. If it length of the iterable happens to be even the last index will be odd; and I want to start removing indexes from position -2 and iterate -2 steps.

For iterables that have an odd length, I want to remove the even indexes starting at position -1 (because the last index is even) and iterate -2 steps.

slices.py
def reverse_evens(iterable):
    if len(iterable) % 2:
        # the last index of an iterable that happens to have an even length is odd
        return iterable[-2::-2]
    else:
        # the last index of an iterable that happens to have an odd length is even
        return iterable[-1::-2]

1 Answer

Steven Parker
Steven Parker
231,248 Points

Your concept is sound, but the implementation has the cases reversed. When the length is odd, the starting offset should be the last item (-1). And when the length is even, the offset should be the second-to-last item (-2).