Rearranging List Elements¶
Python provides two list methods to rearrange the order of the elements. Both methods mutate (change) the original list.
reverse
Example¶
The general syntax for this method is:
list_name.reverse()
reverse
flips the order of the elements in a list. No arguments go inside
the ()
.
Example
1 2 3 4 | words = ['At', 'banana', 'orange', 'apple', 'zoo']
words.reverse()
print(words)
|
Output
['zoo', 'apple', 'orange', 'banana', 'At']
sort
Examples¶
The general syntax for this method is:
list_name.sort()
sort
arranges the elements of a list into increasing order (smallest to
largest). However, all elements inside the list MUST be of the same data type.
Numbers sort with other numbers, strings with other strings, booleans with
other booleans, etc.
Example
Numerical sorting:
1 2 3 4 5 6 7 | numbers = [2, 8, 10, 400, 30, 45.5]
mixed_types = [20, 8, 'm', 'a']
numbers.sort()
print(numbers)
mixed_types.sort()
|
Console Output
[2, 8, 10, 30, 45.5, 400]
Line 11:
mixed_types.sort()
TypeError: '<' not supported between instances of 'str' and 'int'
For strings, sort
arranges the elements in alphabetical order.
Example
When sorting strings, case matters!
1 2 3 4 5 6 7 | letters = ['f', 'c', 'B', 'X', 'a']
letters_and_numbers = ['5', '3', 'm', '8', 'T']
letters.sort()
letters_and_numbers.sort()
print(letters)
print(letters_and_numbers)
|
Console Output
[ 'B', 'X', 'a', 'c', 'f' ]
['3', '5', '8', 'T', 'm']
From the alphabet song, we know that 'a'
comes before 'B'
(and
certainly before 'X'
), but Python treats capital and lowercase letters
differently. Capital letters get sorted before lowercase.
Note that numerical strings come before all letters.
Sorting Numerical Strings¶
Let’s take a look at sorting a list of strings when each element is a string of digits.
Example
1 2 3 4 | number_strings = ['2', '8', '10', '400', '30']
number_strings.sort()
print(number_strings)
|
Console Output
[ 10, 2, 30, 400, 8 ]
Wait… what? How is 8 larger than 400?
Note that even though we use digits, each element is still a string.
Just like 'apple'
comes before 'pear'
because 'a'
comes
before 'p'
, the string '400'
begins with a '4'
, which comes
before any string starting with an '8'
. Looking only at the first
digit in each string, we see the expected progression (1, 2, 3, 4, 8).
Sort in Descending Order¶
To sort a list from the largest to smallest value, the general syntax is:
list_name.sort(reverse = True)
Example
Sort in descending order:
1 2 3 4 5 6 7 | numbers = [2, 8, 10, 400, 30, 45.5]
letters = ['f', 'c', 'B', 'X', 'a']
numbers.sort(reverse = True)
letters.sort(reverse = True)
print(numbers)
print(letters)
|
Console Output
[400, 45.5, 30, 10, 8, 2]
['f', 'c', 'a', 'X', 'B']