什么时候使用过滤函数代替列表理解?

2024-05-14 14:33:13 发布

您现在位置:Python中文网/ 问答频道 /正文

最近,我学习了一些关于过滤方法的知识,这是一种使用列表理解的替代方法

假设我有这样一份清单:

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")]

有人能解释一下列表理解和过滤函数之间的区别吗?为什么有人想使用一个而不是另一个


Tags: 方法name列表names字母filter名字list
1条回答
网友
1楼 · 发布于 2024-05-14 14:33:13

使用两者都没有坏处。关于map也可以发表类似的评论

我倾向于使用人们觉得更容易阅读的东西。在您的情况下,我会避免使用lambda,因为它有点冗长,而是使用理解

我会使用filtermap方法,如果我已经有一个函数存在,我可以直接传递给该方法,这比理解更简洁

例如,假设我编写了一个程序来查找最大名称的长度:

# Using map
longest = max(map(len, names))

# Using generator expression
longest = max(len(name) for name in names))

在上面的示例中,我会选择map而不是生成器表达式,但这完全是个人偏好

相关问题 更多 >

    热门问题