我正在尝试使用lambda和map生成相同的列表,该列表与d中的e相同。 但是,它不会生成可读的列表,而只会生成地图的位置。
a=[1,2,3,4,5]
b=[1,2,3]
d=[v+w for v in a for w in b]
e=list(map(lambda v: (lambda w:v+w, b),a))
答案 0 :(得分:1)
您的lambda需要具有两个输入才能添加两个值(否则第一个值必须已经可以访问)。我会提出这一点,而不是在彼此之间嵌套lambda,而只是使用类似itertools.product()
的方法来获取每个(a
,b
)对,然后将每个元组提交给lambda。 / p>
e = list(map(lambda t:t[0]+t[1], list(itertools.product(a,b))))
在这种情况下,为什么还要烦恼lambda?
e = list(map(sum, list(itertools.product(a,b))))
答案 1 :(得分:1)
我不建议为此(或通常)使用lambda,但是您只能使用内置函数来做到这一点。
e = sum(list(map(lambda v: list(map(lambda w: v + w, b)), a)), [])
# Explanation
# Inner map lambda to add each value from b to v
map(lambda w: v + w, b))
# Outer map lambda that loops through each item in a and runs the inner lambda
map(lambda v: list(map(lambda w: v + w, b)), a)
# Flatten result array
sum(result, [])
答案 2 :(得分:0)
实际上,您不能仅以任何简单的方式使用Route
来完成此操作,因为此处的等效操作将是 flat-map 操作,因此您必须包含一个{ {1}},并在内部animated.div
中实现迭代器。效率不高,即将是二次时间,但类似
map
会工作。如果您想“作弊”,请使用itertools,但这 会很有效:
reduce