【发布时间】:2015-08-25 15:46:58
【问题描述】:
我对 lambda 函数很困惑。
我有一个主机列表,需要 lt 和 gt 两种过滤方式。
这是我的主机列表 [a1.xxx.com, a2.xxx.com, a90.xxx.com, a100.xxx.com]
我需要使用 lambda 函数根据主机号 (a"x") 过滤掉这些主机。所以gt:10 应该给我[99, 100]。我只需要主机号。
所以首先我需要从每个主机中提取数字并应用 > 或 <.>
我可以使用列表推导来实现这一点,但是代码在 lt 和 gt 函数之间是重复的。我希望代码重复更少, lt 和 gt 之间的唯一变量是运算符,其他一切都很常见。有没有办法可以通过 lt,gt 运算符并使用 lambda 函数避免代码重复?
使用列表推导的当前代码
def gt(number) :
host_list = [x.split('.')[0].split('a')[1] for x in hosts if int(x.split('.')[0].split('a')[1]) > int(number)]
return host_list
【问题讨论】:
-
能贴出正在运行的代码吗?
-
您需要向我们展示实际代码。
-
请粘贴您的代码的 sn-p 吗?
-
你可以看看魔术方法
__lt__和__gt__,但是这样做很丑。 -
我很难想象过滤器和匿名函数比相应的理解更可取的场景。推导式可以有一个函数作为参数。