【发布时间】:2016-05-02 18:06:53
【问题描述】:
我即将进入 python 的 3.5 lambda 表示法,我想知道嵌套循环是否可以简单地替换为 lambda 单行。 例如。: 我有这个简单的虚拟类层次结构:
class Resource:
def __init__(self, name="foo"):
self.name = name
class Course:
def __init__(self):
self.resources = list()
class College:
def __init__(self):
self.courses = list()
我有一个College 的实例,其中有多个Courses 和Resources 作为我的起点。
college = College()
现在,如果我想在我的College 中的所有Resources 中找到一个list,我可以很容易地用2 个for-loops 做到这一点:
all_resources = list()
for course in college.courses:
for resource in course.resources:
all_resources.append(resource)
这确实很简单,但我想知道我是否也可以通过这样做来实现这一点:
all_resources = list(map(lambda r: r, [c.resources for c in college.courses]))
但不幸的是,这给了我一个 listof lists 而不是 listof Resources,这是我想要实现的。 lambda 适合这样的事情吗?
对于这样的操作,最 Pythonic 的方式是什么?
【问题讨论】:
标签: python python-3.x lambda