Python Note:在列表,字典,集合中筛选数据

Author Avatar
秋のかえで 2月 11, 2019
  • 在其它设备中阅读本文章

Python3 解释器:CPython
编程中我们经常遇到这样的问题,比方说我要根据字典中的值来筛选数据。下面我以从一个列表中筛选出大于等于0的数为例,介绍几种方法

迭代

迭代是最常用的方法,但是性能。。。

#!/usr/bin/python3

data = [1, 5, -3, 2, 6, 0, 9]
res = []
for x in data:
    if x >=0:
        res.append(x)

print(res)

filter

这个函数有两个参数,一是过滤函数,二是过滤数据

#!/usr/bin/python3

data = [1, 5, -3, 2, 6, 0, 9]
res = list(filter(lambda x: x >= 0, data))
print(res)

解析

下面有请压轴选手。。。
这是最快的方法,所以我比较推荐这种方式

列表解析

#!/usr/bin/python3

data = [1, 5, -3, 2, 6, 0, 9]
res = [x for x in data if x >= 0]
print(res)

字典解析

比方说有一堆学生的成绩,我要过滤出优秀(分数在90分以上(包含90分))然后打印出来

#!/usr/bin/python3
import random

data = {x: random.randint(50,99) for x in range(1,26)}
print(data)
res = {k: v for k, v in data.items() if v >= 90}
print(res)

集合解析

筛选出集合中能被2整除的数

#!/usr/bin/python3

data = [1, 5, -3, 2, 6, 0, 9]
s = set(data)
res = {x for x in s if x % 2 == 0}
print(res)

在无特殊说明的情况下,本站文章均遵循 CC BY-NC-SA 4.0
本文链接:https://blog.iknet.top/post/python-filter-data.html