python - 等价于复杂列表理解的循环表达式

标签 python for-loop list-comprehension

以下 Python List Comprehension语句可以改写为下面的 for 循环。

>>> [(x,y) for x in range(5) if x % 2 == 0 for y in range(5) if y % 2 == 1]

>>> result = []
>>> for x in range(5):
    if x % 2 == 0:
        for y in range(5):
            if y % 2 == 1:
                result.append((x,y))

我很难理解以下两个列表理解表达式。
表达它们的等效 for 循环(更易于阅读)方式是什么?

[(min([row[i] for row in rows]),max([row[i] for row in rows])) 
for i in range(len(rows[0]))]

[[random.random()*(ranges[i][1]-ranges[i][0])+ranges[i][0] 
for i in range(len(rows[0]))] for j in range(k)]

最佳答案

使用你的风格:

我相信第一个是这样做的:

result = []
for col in range(len(rows[0])):
    a = rows[0][col]
    b = rows[0][col]
    for row in rows:
        a = min(a, row[col])
        b = max(b, row[col])

    result.append((a, b))

关于python - 等价于复杂列表理解的循环表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8047965/

相关文章:

python:获取实际环境变量进行修改并传递给子进程

java - ArrayList 内容检查整个数组

python - 理解 Python 列表理解的问题

python - 忽略 Pandas Dataframe 中的时间偏移

python - django-从管理员运行脚本

python - 如何连接 Qt Designer 创建的单独的 UI 文件?

python:如何在findall中使用for循环

java - 像半球一样在java中打印图案

python - 为什么嵌套列表索引与列表推导式交换?

binding - 将向量作为绑定(bind)传递给 for 宏时出现问题