请你帮我理解为什么在Python中使用filter()而不是def-function?除了它更具可读性。
谢谢。
例如,
这一个def-function:
def do_even_check(num):
for i in num:
if i % 2 ==0:
print(i)
else:
pass
my_list = [1,2,3,4,5,6,7,8,9,10]
do_even_check(my_list)
这个filter()
和lambda
:
filter(lambda num: num % 2 == 0, my_lst)
答案 0 :(得分:2)
filter
选项更好,因为结果可能会被重复使用,而do_even_check(num):
函数总是打印输出,阻碍了它在程序其他部分的重复使用。
无论如何,完成此任务的最佳方法既不是你的两种可能性,而是生成器表达式:
evens = (i for i in my_list if i % 2 == 0)
因为它是最可读但最简洁的。
答案 1 :(得分:0)
我提倡过滤,映射和缩减(以及列表理解)是有用的,因为它们通常会导致更少的代码行,这使您的代码更易于维护。它们是从功能范例中采用的,其中一些语言提倡类型安全。虽然python不是一种类型安全的语言,但它可以通过使用这些函数(过滤器,映射,减少)或甚至任何自己的defs函数构建来创建可预测性,因为您将知道它们的返回值(项目列表或单个并且可能它们也被团队中的其他开发人员所知,并且可能更好地记录,而你的defs可能是无效的(没有像打印函数那样的返回值),返回苹果或字符串或任何东西。