Расшифровка инструкции возврата списка Python

#python #list #syntax #for-loop

#python #Список #синтаксис #для цикла

Вопрос:

У меня есть следующее утверждение в подпрограмме Python:

 return [hulls[h][i] for h, i in hull]
  

И я не могу понять, что он на самом деле возвращает.

Я имею в виду, что hulls — это список корпусов, поэтому ‘hulls[n]’ относится к типу ‘hull’. Дополнительно, корпус имеет тип ‘Point’ корпус — это список точек, но

 for h, i in hull? 
  

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

Итак, я хотел бы получить помощь в понимании того, как вы можете перевести предложение в псевдокод или c#

Большое спасибо.

Комментарии:

1. «корпус имеет тип ‘Point'» — нет, это не так, если предположить, что код действительно работает так, как написано. Это последовательность точек.

Ответ №1:

Да, это понимание списка. Ваше заявление о возврате может быть переписано менее компактно, как:

 result = []
for h, i in hull:
    result.append(hulls[h][i])
return result
  

Комментарии:

1. Спасибо! Однако еще одна вещь: «для h, i» означает, что ОБА счетчика увеличиваются одновременно, или что-то еще?

2. [i*j for i,j in [(1,2), (3,4), (5,6)]] ВОЗВРАТ [2 (which is 1*2), 12 (which is 3*4), 30 (which is 5*6)] . По сути, for i,j in blah означает перебирать элементы в blah и распаковывать каждый из них в i, j. Что представляет собой эта переменная hull ? Это должен быть список кортежей, или списков, или чего-то еще, что можно распаковать на два элемента.

Ответ №2:

Корпуса выглядят как двумерный массив объектов. Корпус — это список пар целых чисел (x, y). Для каждой координаты в оболочке он возвращает элемент в оболочках в этом месте.

Комментарии:

1. H, я распаковал Tupperware и назначил первый элемент h, а второй — I.

2. Спасибо. Ваш ответ и ответ Дэвида полностью развеяли мои сомнения, но я должен принять ответ Дэвида для полноты.

Ответ №3:

Да, Дэвид прав. Если вас все еще смущает строка для h, я в hull: я думаю, это означает, что hull — это список кортежей, содержащих несколько элементов. Итак, вы используете каждый элемент в оболочке для использования в качестве индексов для оболочек.