我准备进入python的3.5 lambda表示法,我想知道嵌套循环可以简单地用lambda one-liner代替.例如:我有这个简单的虚拟类层次结构:
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()
Run Code Online (Sandbox Code Playgroud)
我有一个实例College多Courses和Resources我的出发点.
college = College()
Run Code Online (Sandbox Code Playgroud)
现在,如果我想要我list的所有内容Resources,我College可以轻松地用2做for-loops:
all_resources = list()
for course in college.courses:
for resource in course.resources:
all_resources.append(resource)
Run Code Online (Sandbox Code Playgroud)
这确实很简单,但我想知道我是否也可以通过这样做来实现这一点:
all_resources = list(map(lambda r: r, [c.resources for c in college.courses]))
Run Code Online (Sandbox Code Playgroud)
但不幸的是这给了我一个list的lists,而不是list的Resources,我想实现.lambda适合这样的东西吗?对于像这样的手术来说,最蟒蛇的方式是什么?