7

What's the particular reason that some functions in Python operate "IN PLACE", like [].sort and [].reverse, while some others like [].append not?

12
  • 7
    By what definition does [].append not work "in place" ? Commented Mar 15, 2011 at 20:47
  • Does append return a new copy of the list, leaving the old one unmodified? Commented Mar 15, 2011 at 20:47
  • help([].sort) explicitly states that sorting happens "in place", but help([].append) doesn't... Commented Mar 15, 2011 at 20:50
  • 4
    That's because sorting algorithms are frequently classified as "in-place" and "not-in-place," whereas [].append would obviously just modify the existing data structure, unless it's immutable. en.wikipedia.org/wiki/In-place_sorting Commented Mar 15, 2011 at 20:52
  • 3
    @Guandalino: But both operate in place. Perhaps it's not spelled out in the documentation on .append because the non-in-place version would be called concat (and is in fact the + operator). Commented Mar 15, 2011 at 20:52

2 Answers 2

9

According to my Programming Python 4th edition:

By default, pop is equivalent to fetching, and then deleting, the last item at offset −1. With an argument, pop deletes and returns the item at that offset—list.pop(-1) is the same as list.pop(). For in-place change operations like append, insert, del, and pop, no new list is created in memory, so execution is quick (performance may further de- pend upon which end is the “top,” but this in turn depends on Python’s current list implementation, as well as measurement concepts we’ll explore later).

There is actually a whole section devoted to this, but this pretty much answers your question.

Sign up to request clarification or add additional context in comments.

Comments

1

"in-place" refers to a sorting algorithms use of only the memory needed to store the list of items plus some small constant. Append isn't a sorting algorithm and thus "in-place" is not meaningful, or at least wouldn't mean the same thing. You're confusing "in-place" in sorting and whether or not it returns a reference to a new object or a modified version of the same object.

2 Comments

That's not how "in-place" is used when referring to sorting algorithms, or more generally, algorithms which rearrange arrays/lists.
Thanks, but I linked to that article in my comment (on the question) half an hour ago. I'm talking about sorting algorithms such as heapsort, which is in place, vs. typical implementations of quicksort.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.