Python入门教程第38篇 filter()函数
Posted 不剪发的Tony老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python入门教程第38篇 filter()函数相关的知识,希望对你有一定的参考价值。
本篇我们将会学习使用 Python 内置的 filter() 函数过滤列表中的元素。
filter() 函数简介
有时候我们需要对列表中的元素进行遍历并基于指定条件选择某些元素。
加入存在以下列表:
scores = [70, 60, 80, 90, 50]
如果需要获取列表 scores 中大于等于 70 的所有元素,可以使用以下代码:
scores = [70, 60, 80, 90, 50]
filtered = []
for score in scores:
if score >= 70:
filtered.append(score)
print(filtered)
以上代码执行过程如下:
- 首先,定义一个空列表 filtered,用于存储 scores 中满足条件的元素。
- 其次,遍历列表 scores 中的元素。如果元素的值大于等于 70,将其追加到列表 filtered。
- 最后,打印 filtered。
Python 提供了一个内置的函数 filter(),可以更加简洁地实现列表或元组过滤。以下是 filter() 函数的语法:
filter(fn, list)
filter() 函数遍历列表中的元素并且针对每个元素应用 fn() 函数,然后返回 fn() 结果为 True 的元素,返回结果是一个迭代器。
实际上,我们可以将任何可遍历对象作为 filter() 函数的第二个参数,而不仅仅是列表。
以下示例使用 filter() 函数返回了得分大于等于 70 的元素:
scores = [70, 60, 80, 90, 50]
filtered = filter(lambda score: score >= 70, scores)
print(list(filtered))
输出结果如下:
[70, 80, 90]
filter() 函数的返回结果是一个迭代器,我们可以使用 for 循环对其进行遍历,或者使用 list() 函数将其转化为一个列表。
示例:过滤元组列表
以下是一个由元组组成的列表:
countries = [
['China', 1394015977],
['United States', 329877505],
['India', 1326093247],
['Indonesia', 267026366],
['Bangladesh', 162650853],
['Pakistan', 233500636],
['Nigeria', 214028302],
['Brazil', 21171597],
['Russia', 141722205],
['Mexico', 128649565]
]
countries 列表中的每个元素都是一个元组,包含了国家名称和人口。
如果想要获取人口大于 3 亿的国家,可以使用 filter() 函数:
countries = [
['China', 1394015977],
['United States', 329877505],
['India', 1326093247],
['Indonesia', 267026366],
['Bangladesh', 162650853],
['Pakistan', 233500636],
['Nigeria', 214028302],
['Brazil', 21171597],
['Russia', 141722205],
['Mexico', 128649565]
]
populated = filter(lambda c: c[1] > 300000000, countries)
print(list(populated))
输出结果如下:
[['China', 1394015977], ['India', 1326093247], ['United States', 329877505]]
总结
- filter() 函数可以过滤列表或者元组中的元素。
以上是关于Python入门教程第38篇 filter()函数的主要内容,如果未能解决你的问题,请参考以下文章