Python for 循环和数组

标签 python for-loop

我是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(..)] 实际上不会完成太多任务。

我发现在您提供的示例中有两个迭代器,这使事情变得有点复杂。但本质上,他们提供了两个引用变量:rcol,使用这两个变量得出最终结果。

列表推导式是 Python 中非常强大的工具。绝对值得了解。

关于Python for 循环和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33642835/

相关文章:

Python - 获取最密集点的坐标

python - 不寻常的排列

python - django orm中objects.create()和object.save()的区别

python - 如何使 Pandas 数据框 Fortran 类型有序

java - 如何在 java 中使用 for 循环在 java 中打印倾斜的金字塔图案?

c - 循环遍历字符串数组,然后使用 scanf_s c 转换为字节

python - 正则表达式删除首字母缩写词中的句点?

php - 奇怪的 PHP 输出

mysql - 可以在 MySQL 中使用 'For Each' 循环来生成带有变量的临时表吗?

java - 判断string2是否和string1一起出现