如何在Python中对集合运行操作并收集结果?
所以,如果我有一个包含100个数字的列表,我想为每个数字运行这样的函数:
Operation ( originalElement, anotherVar ) # returns new number.
并收集结果如下:
结果=另一个清单......
我该怎么办?也许使用lambdas?
答案 0 :(得分:12)
List comprehensions.在Python中,它们看起来像:
a = [f(x) for x in bar]
其中f(x)是某个函数,bar是序列。
您可以将f(x)定义为部分应用的函数,其构造如下:
def foo(x):
return lambda f: f*x
这将返回一个将参数乘以x的函数。列表推导中使用的这种类型构造的一个简单示例如下:
>>> def foo (x):
... return lambda f: f*x
...
>>> a=[1,2,3]
>>> fn_foo = foo(5)
>>> [fn_foo (y) for y in a]
[5, 10, 15]
虽然我不认为在任何相当深奥的案例中使用这种构造。 Python不是一种真正的函数式语言,因此与具有更高阶函数的巧妙技巧(例如)Haskell相比,它的范围较小。您可能会找到此类构造的应用程序,但它并不是 pythonic。您可以通过以下方式实现简单的转换:
>>> y=5
>>> a=[1,2,3]
>>> [x*y for x in a]
[5, 10, 15]
答案 1 :(得分:1)
另一种(略微折旧)的方法是:
def kevin(v): return v * v
vals = range(0,100)
地图(凯文,瓦尔斯)
答案 2 :(得分:0)