Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,列表中的for循环做什么?_Python_Loops - Fatal编程技术网

在Python中,列表中的for循环做什么?

在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

有人能给我解释一下这个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 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]

它被称为“列表理解”