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 Back and Forth

Payam Mesgari
seal-mask
.a{fill-rule:evenodd;}techdegree
Payam Mesgari
Python Web Development Techdegree Student 1,072 Points

Why method chaining does not work on sort()?

Why my line fails when I try to sort the sorted_things directly after copying it, I want to do this in one line.

slices.py
favorite_things = ['raindrops on roses', 'whiskers on kittens', 'bright copper kettles',
                   'warm woolen mittens', 'bright paper packages tied up with string',
                   'cream colored ponies', 'crisp apple strudels']

slice1 = favorite_things[1:4]
slice2 = favorite_things[len(favorite_things)-2:]
sorted_things = favorite_things[:].sort()

1 Answer

Steven Parker
Steven Parker
229,732 Points

You have two issues here:

  • the temporary copy produced by the slice must be assigned to something or it is disposed
  • the sort method re-orders the list it is applied to, but it does not return anything

So you probably want to use the sorted function instead:

sorted_things = sorted(favorite_things[:])

And while this works, I should point out for the benefit of other readers that the challenge was expecting this to be done on 2 lines using sort.

FYI: for slice2, you don't need to compute the position using the length, a negative offset will do:

slice2 = favorite_things[-2:]