python - Python 列表推导与返回列表的函数
问题描述
我正在尝试为一系列值调用函数。该函数返回一个列表。目标是将所有返回的列表组合成一个列表。
这是一个返回列表的测试函数:
def f(i):
return [chr(ord('a') + i), chr(ord('b') + i), chr(ord('c') + i)]
这是一个列表理解,它可以满足我在一些实验和大量 StackOverflow 阅读后提出的需要:
y = [a for x in (f(i) for i in range(5)) for a in x]
但是,当解决此问题的简单循环如下所示时,我不明白它为什么以及如何工作:
y = []
for x in (f(i) for i in range(5)):
for a in x:
y.append(a)
有人可以解释吗?
谢谢!
解决方案
根据 Bendik Knapstad 的回答,这可能是一个更好的说明:
[
a # element added to the list
for x in (f(i) for i in range(5)) # outer loop
for a in x # inner loop that assigns to element to be added to the list
]
推荐阅读
- javascript - 用 dom JS 移除 tr 标签
- jquery - 复选框的jQuery验证消息不起作用
- cassandra - 进行 nodetool 修复时,cassandra 在写入期间超时
- qt - QML:无法将 [未定义] 分配给
- c# - SqlException on Commit() 事务操作无法执行,因为有待处理的请求正在处理此事务
- php - ZF2:如何在控制器内创建模型的新实例
- python - Python 字符串格式化和 UUID
- c - scanner.l:22:警告,规则无法匹配
- angular - 动画中的过渡在 Angular 中不起作用
- javascript - ColorLuminance 错误的颜色