В Python range(num)
( больше или меньше ) возвращает список чисел от 0 до num - 1
.Отсюда следует, что range(len(my_list))
сгенерирует список чисел от 0 до длины my_list
минус один.Это часто полезно, потому что сгенерированные числа являются индексами каждого элемента в my_list
(списки Python начинают считать с 0).Например, range(len(["a", "b", "c"]))
- это [0, 1, 2]
, индексы, необходимые для доступа к каждому элементу в исходном списке.["a", "b", "c"][0]
равно "a"
и т. Д.
В Python цикл for x in mylist
перебирает каждый элемент в mylist
, устанавливая x
в значение каждого элемента по порядку.Одним из распространенных шаблонов для Python для циклов является for x in range(len(my_list))
.Это полезно, потому что вы перебираете индексы каждого элемента списка вместо самих значений.Доступ к значениям почти такой же легкий (просто используйте my_list[x]
), но гораздо проще сделать такие вещи, как доступ к предыдущему значению (просто используйте my_list[x-1]
, гораздо проще, чем если бы у вас не было индекса!).
В вашем примере idx
отслеживает индекс каждого элемента списка, когда программа выполняет итерацию по search_list
.Чтобы извлечь значения из search_list
, программа использует search_list[idx]
, так же, как я использовал my_list[x]
в моем примере.Затем код присваивает maximum_score_index
самому индексу номер, например 0
, 1
или 2
, а не значение.С помощью search_list[maximum_score_index]
все еще легко узнать, какова максимальная оценка.Причина того, что idx
не используется в качестве средства доступа к списку во втором случае, заключается в том, что программа хранит сам индекс, а не значение массива в этом индексе.