小编Mad*_*tts的帖子

在Python 3.x中聚合没有嵌套循环的嵌套列表

我准备进入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)

我有一个实例CollegeCoursesResources我的出发点.

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)

但不幸的是这给了我一个listlists,而不是listResources,我想实现.lambda适合这样的东西吗?对于像这样的手术来说,最蟒蛇的方式是什么?

python lambda python-3.x

1
推荐指数
1
解决办法
86
查看次数

标签 统计

lambda ×1

python ×1

python-3.x ×1