Предполагая, что вы уже собрали оценки в список под названием grades
:
# New list of sorted entries
sorted_grades = sorted(grades)
# Sum of all list entries divided by the length
average = sum(grades)/len(grades)
# Last entry minus the first entry
range = grades[-1] - grades[0]
# Slice from the third-to-last entry to the end of the list
top_three = grades[-3:]
Синтаксис, такой как отрицательное индексирование и нарезка, обсуждается далее в учебнике , приведенном в документации CPython :
Как и строки (и все другие встроенные типы последовательностей), списки могут быть проиндексированы и нарезаны:
>>> squares = [1, 4, 9, 16, 25]
>>> squares
[1, 4, 9, 16, 25]
>>> squares[0] # indexing returns the item
1
>>> squares[-1]
25
>>> squares[-3:] # slicing returns a new list
[9, 16, 25]
Все операции срезов возвращают новый список, содержащийзапрошенные элементы.Это означает, что следующий фрагмент возвращает новую (мелкую) копию списка:
>>> squares[:]
[1, 4, 9, 16, 25]
Общий формат индексации / нарезки списка: some_list[start:stop:step]
:
>>> numbers = [1,3,5,7,9]
>>> numbers[0:3] # slice from the first element to the third
[1, 3, 5]
>>> numbers[:3] # 0's can be omitted
[1, 3, 5]
>>> numbers[1:3] # slice from the second element to the third
[3, 5]
>>> numbers[3:] # slice from the third element to the end
[7, 9]
>>> numbers[-3:] # slice from the third-to-last to the end
[5, 7, 9]
>>> numbers[::-1] # slice of the whole list, stepping backward by 1 for each entry
[9, 7, 5, 3, 1]
>>> numbers[1::2] # slice of every other entry, starting with the second
[3, 7]
Обратите внимание, что фрагменты списка исключают конец, поэтому numbers[1:2]
возвращает только вторую запись: [3]
.