IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python实例:根据条件筛选列表、字典、集合中数据的方法 -> 正文阅读

[Python知识库]Python实例:根据条件筛选列表、字典、集合中数据的方法

一、过滤列表中的负数

1.1 方案一:使用for循环实现列表过滤

场景描述:过滤列表[3, 5, -19, -3, 48, 22, -19, -33, 42, -4, -18]中的负数。

最简单的实现方法:使用for循环实现,代码如下所示。

list_data = [3, 5, -19, -3, 48, 22, -19, -33, 42, -4, -18]
# (1) 创建空列表用于存储过滤结果:
list_data_filter_result = []

# (2) 下面使用for循环实现过滤列表中的负数:
for x in list_data:
	if x >= 0:
		list_data_filter_result.append(x)

# (3) 输出结果:
print(list_data_filter_result)

代码的实现结果如下图所示:

在这里插入图片描述
上面的for循环方案是一个简单的列表筛选方案,其实Python中还有以下两种更高级的列表筛选方案:

(1)列表解析:[x for x in list_data if x >= 0];
(2)使用filter函数配合lambda匿名函数:filter(lambda x: x >= 0, list_data)

1.2 方案二:使用列表解析进行列表过滤

Python代码如下所示:

from random import randint

# (1) 使用randint生成包含十个数字的随机列表:
List_1 = [randint(-10, 10) for _ in rang(10)]

# (2 )下面使用列表解析方法实现筛选类表中的正数:
List_Filter_1 = [x for x in List_1 if x >= 0]

# (3) 输出结果:
print('原始列表:', List_1)
print('过滤负数后的列表:', List_Filter_1)

输出结果如下图所示:

在这里插入图片描述

1.3 方案三:使用filter函数进行列表过滤

filter函数通过匿名函数lambda对列表进行筛选,并返回一个filter生成器对象(filter object)。获取filter生成器对象的方法通常有两种:

  • 1、通过next函数依次读取,当读取完列表内容后,会抛出一个StopIteration异常;
  • 2、使用list列表构造器读取filter生成器对象中的内容(本文使用的方法)。

Python代码如下所示:

from random import randint

List_1 = [randint(-10, 10) for _ in range(10)]

# (1) 使用filter函数配合lambda匿名函数,对列表进行筛选
# 并返回一个filter生成器对象(filter object)。
filter_object = filter(lambda x: x >= 0, List_1)

# (2) 使用list列表构造器读取生成器对象中的内容:
List_Filter_1 = list(filter_object)

# (3) 输出结果:
print('原始列表:', List_1)
print('过滤负数后的列表:', List_Filter_1)

总结:上面三种方法,方案一是最基本的方法,最常用的是方案二,方案三属于进阶应用。

二、筛选出字典中值大于某个值的项

场景描述:筛选出字典中值velue满足某些条件的项。比如:{'xiaoliang':87, 'xiaowang':99, 'xiaoxin':95, 'xiaoli':67, 'xiaoran':79, 'xiaoxuan':88}值高于90的项。

2.1 方案一:使用字典解析进行字典筛选

这里需要注意两个方面:

  • 1、创建一个包含学生名、成绩字典的方式;
  • 2、字典解析筛选方法。

Python代码如下所示:

from random import randint

# (1) 创建一个包含20个学生名及成绩的字典创建方法
student_dict = {'student_%d' % i: randint(50, 100) 
								for i in range(1, 21)}

# (2) 下面使用字典解析方法,筛选出字典中选取成绩在90分以上的学生:
student_dict_filter  = {stu_key:stu_val for stu_key, stu_val 
							in student_dict.items() if stu_val >= 90}

# (3) 输出结果:
print('原始字典:', student_dict)
print('筛选后的字典:', student_dict_filter)

输出结果如下图所示:

在这里插入图片描述

2.2 方案二:使用filter函数进行字典筛选

filter函数进行字典过滤方法具体步骤
1、在filter函数中使用匿名函数lambda对字典进行过滤;
2、注意lambda的参数x接收的是字典项student.items(),并以元组形式存储。另外,我们需要判断的是字典的value,即通过x[1]> = 90实现成绩筛选;
3、由于filter函数返回的是一个filter生成器对象(filter_object),所以需要使用字典构造器dict读取其中内容,才能正常输出字典结果。

Python代码如下所示:

from random import randint

# 1、下面是创建一个包含学生及成绩字典的高级方式:
student_dict = {'student_%d' % i: randint(50, 100) 
					for i in range(1, 21)}

# 2、filter函数进行字典过滤方法具体步骤
# (1)下面使用filter函数来进行字典解析,在filter内部
# 使用匿名函数lambda进行字典过滤。
# (2) 注意:x返回的是字典student.items()的一个包含
# 字典key和value的元组,我们需要判断的只是字典的value。
# (3) 还要注意:需要使用字典构造器dict将filter生成器中
# 的内容取出,才能正常输出字典结果。
student_dict_filter = dict(filter(lambda x: x[1] >= 90,
							student_dict.items()))

# 3、输出结果
print('原始字典:' ,student_dict)
print('筛选后的字典:' ,student_dict_filter)

输出结果如下图所示:
在这里插入图片描述

三、筛选出集合中符合某个条件的元素

场景描述:筛选出集合中能被3整除的元素,这里使用最常用的集合解析方法实现。

Python代码如下所示:

from random import randint

# (1)下面创建一个20个50以内的数字集合:
number_set = {randint(0, 50) for _ in range(20)}

# (2)下面使用集合解析方法筛选出集合中能够被3整除的元素:
number_set_filter = {x for x in number_set if x % 3 == 0}

# (3)输出结果:
print('原始集合:', number_set)
print('过滤后的的集合:', number_set_filter)

输出结果如下图所示:

在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 22:39:24  更:2022-04-07 22:39:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:30:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码