Ответ 1
Строка кода, о которой вы спрашиваете, использует понимание списка, чтобы создать список и назначить данные, собранные в этом списке, на self.cells
, Это эквивалентно
self.cells = []
for i in xrange(region.cellsPerCol):
self.cells.append(Cell(self, i))
Объяснение
Чтобы лучше объяснить, как это работает, несколько простых примеров могут поучительно помочь вам понять код, который у вас есть. Если вы собираетесь продолжить работу с кодом Python, вы снова столкнетесь с пониманием списка, и вы можете захотеть использовать его самостоятельно.
Примечание. В приведенном ниже примере оба сегмента кода эквивалентны тем, что они создают list
значений, хранящихся в списке myList
.
Например:
myList = []
for i in range(10):
myList.append(i)
эквивалентно
myList = [i for i in range(10)]
Смысл списка также может быть более сложным, так, например, если у вас было какое-то условие, определяющее, должны ли значения входить в список, вы также можете выразить это со списком.
В этом примере собираются только пронумерованные значения в списке:
myList = []
for i in range(10):
if i%2 == 0: # could be written as "if not i%2" more tersely
myList.append(i)
и понимание эквивалентного списка:
myList = [i for i in range(10) if i%2 == 0]
Две последние заметки:
- У вас могут быть "вложенные" списки, но они быстро усложняются:)
- Понимание списка будет работать быстрее, чем эквивалент for-loop, и поэтому часто является фаворитом обычных программистов на Python, которые обеспокоены эффективностью.
Хорошо, последний пример показывает, что вы также можете применять функции к элементам, которые вы повторяете в списке. Это использует float() для преобразования списка строк в значения с плавающей запятой:
data = ['3', '7.4', '8.2']
new_data = [float(n) for n in data]
дает:
new_data
[3.0, 7.4, 8.2]