如何在Python中对集合运行操作并收集结果?

时间:2009-03-09 21:45:56

标签: python list lambda

如何在Python中对集合运行操作并收集结果?

所以,如果我有一个包含100个数字的列表,我想为每个数字运行这样的函数:

Operation ( originalElement, anotherVar ) # returns new number.

并收集结果如下:

结果=另一个清单......

我该怎么办?也许使用lambdas?

3 个答案:

答案 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)