Using list.count to sort a list in-place using .sort() does not work. Why?
问题 I am trying to sort a list by frequency of its elements. >>> a = [5, 5, 4, 4, 4, 1, 2, 2] >>> a.sort(key = a.count) >>> a [5, 5, 4, 4, 4, 1, 2, 2] a is unchanged. However: >>> sorted(a, key = a.count) [1, 5, 5, 2, 2, 4, 4, 4] Why does this method not work for .sort() ? 回答1: What you see is the result of a certain CPython implementation detail of list.sort . Try this again, but create a copy of a first: a.sort(key=a.copy().count) a # [1, 5, 5, 2, 2, 4, 4, 4] .sort modifies a internally, so a