Для которого версия Python добавила выражение else для циклов?

В 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 не используется в качестве средства доступа к списку во втором случае, заключается в том, что программа хранит сам индекс, а не значение массива по этому индексу.

11
задан Moe 25 March 2009 в 15:48
поделиться

3 ответа

Это присутствовало с начала. Чтобы видеть что, получите источник от alt.sources, конкретно сообщение, названное "часть 17/21 Python 0.9.1". Дата 21 февраля 1991. Это сообщение включало определение грамматики, которое указывает:

for_stmt: 'for' exprlist 'in' exprlist ':' suite ['else' ':' suite] 

Вы смогли находить 0.9.0 источников, если бы Вы пробуете тяжелее, чем я, но поскольку первый общедоступный выпуск был 0.9.0 20 февраля, который вернул бы Вас однажды. Эти 0.9.1 выпусков были незначительным патчем, который не влиял на эту часть грамматики.

(Который является ссылкой UTSL или что? Когда был прошлый раз, Вы посмотрели на shar файл?;)

BTW, я восстановил первоисточник и настроил его немного для компиляции под gcc-4.0 на моем поле OS X 10.4. Детали для заинтересованных немногие, включая python-0.9.1.tar.gz.

Вся история разработки доступна от управления версиями, даже после изменения систем управления версиями дважды. "hg регистрируются,-p-r 6:7" из cpython Подвижного архива показывает, что "для/еще" фиксировался на Sun 14 октября 12:07:46 1990 +0000, и предыдущая фиксация была суббота 13 октября 19:23:40 1990 +0000. для/еще была часть Python с октября 1990.

28
ответ дан 3 December 2019 в 01:53
поделиться

Начиная с версии 1.0.1, по крайней мере..

Python 1.0.1 (Mar 27 2009)
Copyright 1991-1994 Stichting Mathematisch Centrum, Amsterdam
>>> for x in range(2):
...     print x
... else:
...     print "loop done"
... 
0
1
loop done
1
ответ дан 3 December 2019 в 01:53
поделиться

Это было вокруг по крайней мере начиная с 1,4, который является самой старой версией документации, о которой я знаю.

7
ответ дан 3 December 2019 в 01:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: