我是Python新手。我正在尝试学习从 Excel 文件中提取数据。我遇到了以下语句:
sheet_data = [[sheet.cell_value(r, col) for col in range(sheet.ncols)] for r in range(sheet.nrows)]
我理解常规的 for 循环,但不理解以下版本:
x for y in range()
当 for y in range() 之前有一个变量 x 时,这意味着什么?
最佳答案
for 语句用于循环列表。这称为迭代器。当它被 [..] 包围时,这称为列表理解。
列表推导式允许您将一个列表转换为另一个列表。这有时称为映射,即从 X -> Y 的映射,其中函数将 X 的值转换为 Y 的返回值
例如,在
[y + 2 for y in range(...)]
for 正在迭代 range() 生成的列表中的所有值。每个列表元素的 y 值都加了 2,因此最终结果是一个列表,其中每个元素都比源列表中的相应元素大 2。因此,range(3) 将产生 [0, 1, 2],然后转换为 [2, 3, 4]。
因此 [y for y in range(..)] 实际上不会完成太多任务。
我发现在您提供的示例中有两个迭代器,这使事情变得有点复杂。但本质上,他们提供了两个引用变量:r和col,使用这两个变量得出最终结果。
列表推导式是 Python 中非常强大的工具。绝对值得了解。
关于Python for 循环和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33642835/