如何在Python中对集合运行操作并收集结果?
所以,如果我有一个包含100个数字的列表,我想为每个数字运行这样的函数:
Operation ( originalElement, anotherVar ) # returns new number.
并收集结果如下:
结果=另一个清单......
我该怎么做?也许使用lambdas?
列表理解. 在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相比,它的范围较小.您可能会发现这种类型的结构的应用,但它不是真的是 Python的.您可以通过以下方式实现简单的转换:
>>> y=5 >>> a=[1,2,3] >>> [x*y for x in a] [5, 10, 15]