我正在阅读一些Python代码,并遇到了以下生成二维数组的行。
self.slots = [[Slot(self.world,i,j) for j in range(NUMROWS)] for i in range(NUMCOLS)]
我的问题是:
1)这种符号也称为"生成器"吗?
2)你如何解释这句话在英语中的含义?即"创建大小NUMROWS
Slot
对象的数组"等。
3)创造的顺序是什么?是先创建NUMROWS
数组,然后再创建NUMCOLS
数组吗?
本质上,
[[Slot(self.world,i,j) for j in range(NUMROWS)] for i in range(NUMCOLS)]
与以下相同:
slots = []
for i in range(NUMCOLS):
column = []
for j in range(NUMROWS):
row = Slot(self.world, i, j)
column.append(row)
slots.append(column)
它被称为list comprehension
,见 http://docs.python.org/2/tutorial/datastructures.html#list-comprehensions
例如:
>>> x, y = 2,3
>>> [[(i,j) for j in range(y)] for i in range(x)]
[[(0, 0), (0, 1), (0, 2)], [(1, 0), (1, 1), (1, 2)]]