python中的lambda函数与过滤

python中的lambda函数与过滤,python,lambda,Python,Lambda,我对lambda函数非常困惑 我有一个主机列表,需要两种过滤方式lt和gt 这是我的主人名单 [a1.xxx.com、a2.xxx.com、a90.xxx.com、a100.xxx.com] 我需要使用lambda函数根据主机号ax筛选出这些主机。所以gt:10应该给我[99100]。我只需要主机号码 因此,首先我需要从每个主机中提取数字并应用>或如果列表理解之间唯一不同的是比较运算符,那么将列表理解放在函数中,并将运算符函数作为参数传递给它。您可以自己定义运算符函数,但Python的标准库中有

我对lambda函数非常困惑

我有一个主机列表,需要两种过滤方式lt和gt

这是我的主人名单 [a1.xxx.com、a2.xxx.com、a90.xxx.com、a100.xxx.com]

我需要使用lambda函数根据主机号ax筛选出这些主机。所以gt:10应该给我[99100]。我只需要主机号码


因此,首先我需要从每个主机中提取数字并应用>或如果列表理解之间唯一不同的是比较运算符,那么将列表理解放在函数中,并将运算符函数作为参数传递给它。您可以自己定义运算符函数,但Python的标准库中有一个模块,在本例中更方便

import operator

hosts = ['a1.xxx.com', 'a2.xxx.com', 'a90.xxx.com', 'a100.xxx.com']

def filter_hosts(hosts, number, op=operator.gt):
    return [host for host in hosts
            if op(int(host.split('.', 1)[0][1:]), number)]

print(filter_hosts(hosts, 10))
print(filter_hosts(hosts, 10, op=operator.lt))

你能发布正在运行的代码吗?你需要向我们展示实际的代码。请粘贴你的代码片段?你可以看看神奇的方法uu lt_uu和u gt_uuu,但这样做非常难看。我很难想象一个场景,过滤和匿名函数比相应的理解更可取。理解可以有一个函数作为参数。
import operator

hosts = ['a1.xxx.com', 'a2.xxx.com', 'a90.xxx.com', 'a100.xxx.com']

def filter_hosts(hosts, number, op=operator.gt):
    return [host for host in hosts
            if op(int(host.split('.', 1)[0][1:]), number)]

print(filter_hosts(hosts, 10))
print(filter_hosts(hosts, 10, op=operator.lt))