#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 — это список кортежей, содержащих несколько элементов. Итак, вы используете каждый элемент в оболочке для использования в качестве индексов для оболочек.