最近,我学习了一些关于过滤方法的知识,这是一种使用列表理解的替代方法
假设我有这样一份清单:
names = ["Bob", "Billy", "Samuel", "Adam", "Rob"]
现在,我想得到一个包含以字母“B”开头的名字的列表。我可以从两个方面着手。这是一个:
b_starting_names = list(filter(lambda name: name.startswith("B"), names))
这是另一个:
b_starting_names = [name for name in names if name.startswith("B")]
有人能解释一下列表理解和过滤函数之间的区别吗?为什么有人想使用一个而不是另一个
使用两者都没有坏处。关于
map
也可以发表类似的评论我倾向于使用人们觉得更容易阅读的东西。在您的情况下,我会避免使用lambda,因为它有点冗长,而是使用理解
我会使用
filter
或map
方法,如果我已经有一个函数存在,我可以直接传递给该方法,这比理解更简洁例如,假设我编写了一个程序来查找最大名称的长度:
在上面的示例中,我会选择
map
而不是生成器表达式,但这完全是个人偏好相关问题 更多 >
编程相关推荐