私はPythonの3.5ラムダ表記法に取り掛かりつつあります。ネストしたループをラムダ1ライナーで置き換えることができますか? 例えば: 私はこの単純なダミーのクラス階層があります。Python 3.xでネストされたループのないネストしたリストの集合
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()
私は私の出発点として、複数のCourses
とResources
とCollege
のインスタンスを持っています。私は簡単に2 for-loops
でこれを行うことができ、私のCollege
内のすべてのResources
のlist
をしたい場合は
college = College()
は今:
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]))
をしかし残念ながら、これは私にのlist
を与えますで、list
はResources
ではありません。ラムダはそれに適していますか? このような操作のための最も無作法な方法は何でしょうか?