带参数的 Python 列表过滤

标签 python list filter functional-programming

python 中有没有一种方法可以在列表中调用过滤器,其中过滤函数在调用期间绑定(bind)了许多参数。例如有没有办法做这样的事情:

>> def foo(a,b,c):
    return a < b and b < c

>> myList = (1,2,3,4,5,6)

>> filter(foo(a=1,c=4),myList)
>> (2,3)

也就是说有没有办法调用 foo 使 a=1、c=4 和 b 绑定(bind)到 myList 中的值?

最佳答案

一种方法是使用 lambda:

>>> def foo(a, b, c):
...     return a < b and b < c
... 
>>> myTuple = (1, 2, 3, 4, 5, 6)
>>> filter(lambda x: foo(1, x, 4), myTuple)
(2, 3)

另一个是使用partial :

>>> from functools import partial
>>> filter(partial(foo, 1, c=4), myTuple)
(2, 3)

关于带参数的 Python 列表过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7045754/

相关文章:

C 判断链表中是否存在某个值

R:如何将列表拆分为 AM/PM

java - 过滤@Stateless @Webservice

python - 由于 Django 1.2.1 'prepopulated_fields' 不会在管理中预填充

python - 如何避免从 python 中的方法返回语句中命名未使用的变量

python - 对 TF-IDF 特征向量中的特定特征进行加权,以实现 k 均值聚类和余弦相似度

list - 如果序列出现在列表中则返回 True

list - 字典列表中值的总和

javascript - 在JS中过滤另一个数组中的对象数组

python - 将数据框与分钟和日期索引相结合