在Python中,列表中的for循环做什么?
有人能给我解释一下这个Python代码片段的最后一行吗在Python中,列表中的for循环做什么?,python,loops,Python,Loops,有人能给我解释一下这个Python代码片段的最后一行吗 Cell只是另一个类。我不明白如何使用for循环将单元格对象存储到列对象中 class Column(object): def __init__(self, region, srcPos, pos): self.region = region self.cells = [Cell(self, i) for i in xrange(region.cellsPerCol)] #Please expla
Cell
只是另一个类。我不明白如何使用for
循环将单元格
对象存储到列
对象中
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.
这与您所做的相同:
def __init__(self, region, srcPos, pos):
self.region = region
self.cells = []
for i in xrange(region.cellsPerCol):
self.cells.append(Cell(self, i))
这被称为一个 您询问的代码行用于创建列表,并将在此列表中收集的数据分配给
self.cells
。相当于
self.cells = []
for i in xrange(region.cellsPerCol):
self.cells.append(Cell(self, i))
myList = [i for i in range(10)]
说明:
为了更好地解释这是如何工作的,一些简单的例子可能会有助于您理解现有的代码。如果您打算继续使用Python代码,您将再次遇到列表理解,您可能希望自己使用它
请注意,在下面的示例中,这两个代码段是等效的,因为它们创建了存储在列表myList
中的值的list
例如:
myList = []
for i in range(10):
myList.append(i)
相当于
self.cells = []
for i in xrange(region.cellsPerCol):
self.cells.append(Cell(self, 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循环运行得更快,因此经常受到关注效率的普通Python程序员的喜爱
data = ['3', '7.4', '8.2']
new_data = [float(n) for n in data]
给出:
new_data
[3.0, 7.4, 8.2]
它被称为“列表理解”