有人可以向我解释此Python代码段的最后一行吗?
Cell只是另一类。我不明白如何使用for循环将Cell对象存储到Column对象中。
Cell
for
Column
class Column(object): def __init__(self, region, srcPos, pos): self.region = region self.cells = [Cell(self, i) for i in xrange(region.cellsPerCol)] #Please explain this line.
您要询问的代码行是使用列表推导创建一个列表,并将在此列表中收集的数据分配给self.cells。相当于
self.cells
self.cells = [] for i in xrange(region.cellsPerCol): self.cells.append(Cell(self, i))
说明 :
为了最好地解释它是 如何 工作的,可以使用一些简单的示例来帮助您 理解 所拥有的代码。如果您要继续使用Python代码,则将再次遇到列表理解,您可能想自己使用它。
注意,在下面的示例中,两个代码段都是 等效的 ,因为它们创建了一个list存储在list中的值myList。
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]
最后两个注意事项:
好的,最后一个示例显示您还可以将函数应用于列表中要遍历的项目。这使用float()将字符串列表转换为float值:
data = ['3', '7.4', '8.2'] new_data = [float(n) for n in data]
给出:
new_data [3.0, 7.4, 8.2]