'Для x в массиве', всегда приводят к отсортированному x? [Python/NumPy]

Я хотел выбрать Нулевые аргументы от других недопустимых аргументов, таким образом, я получил исключение из IAE под названием NullArgumentException. Даже не будучи должен прочитать сообщение об исключении, я знаю, что нулевой аргумент был передан в метод и путем чтения сообщения, я узнаю, какой аргумент был пустым. Я все еще ловлю NullArgumentException с обработчиком IAE, но в моих журналах то, где я вижу различие быстро.

9
задан Chris 7 August 2009 в 15:51
поделиться

3 ответа

Гарантия для списков. Я думаю, что более подходящим Python, параллельным вашему примеру C #, будет итерация по ключам в словаре, который НЕ гарантируется в любом порядке.

# Always prints 0-9 in order
a_list = [0,1,2,3,4,5,6,7,8,9]
for x in a_list:
    print x

# May or may not print 0-9 in order. Implementation dependent.
a_dict = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
for x in a_dict:
    print x

для в структура беспокоится только о том, что итерабельность предоставляет функцию next () , которая что-то возвращает. Нет общей гарантии, что эти элементы будут возвращены в любом порядке по домену оператора for..in ; списки - это особый случай.

10
ответ дан 4 December 2019 в 08:15
поделиться

Да, это полностью гарантировано. для элемента в myarray (где myarray - это последовательность , которая включает массивы numpy, встроенные списки, массивы Python и т. Д.), Фактически эквивалентна в Python:

_aux = 0
while _aux < len(myarray):
  item = myarray[_aux]
  ...etc...

для некоторой фантомной переменной _aux ;-). Кстати, обе ваши конструкции также эквивалентны

itemlist = list(myarray)
10
ответ дан 4 December 2019 в 08:15
поделиться

Да, Справочник по языку Python это гарантирует (выделено мной):

 for_stmt ::=  "for" target_list "in" expression_list ":" suite
               ["else" ":" suite]

"Набор затем выполняется один раз для каждого элемента, предоставленного итератор, в порядке возрастания индексов . "

6
ответ дан 4 December 2019 в 08:15
поделиться
Другие вопросы по тегам:

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