加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Python 集合推导

发布时间:2023-06-27 10:23:10 所属栏目:教程 来源:
导读:列表推导用于快速生成一个列表,类似的,Python 同时提供了集合推导用于快速生成一个集合,语法如下:

{expression for item iteratable}
可以认为它使用如下代码创建了一个集合:

s = set()for item iterata
列表推导用于快速生成一个列表,类似的,Python 同时提供了集合推导用于快速生成一个集合,语法如下:

{expression for item iteratable}
可以认为它使用如下代码创建了一个集合:

s = set()for item iteratable:s.add(expression)
在第 1 行,使用函数 set () 创建一个空的集合

在第 2 行,创建一个循环语句,遍历 iteratable

在第 3 行,在循环中,向集合添加元素 expression

与列表推导类似,集合推导也支持 if 语句进行选择,语法如下:

{expression for item iteratable if condition}
可以认为它使用如下代码创建了一个集合:

s = set()for item iteratable:if condition:s.add(expression)
注意,在第 3 行,只有满足条件,才会将元素添加到集合中。

应用举例
包含从 0 到 10 之间所有整数的集合

>>> {i for i in range()}{, , , , , , , , , }
将集合中的元素乘以 10

>>> set = {, , }>>> {i* for i in set}{, , }
将列表中所有的字符串变成大写

>>> set = {'www', 'imooc', 'com'}>>> {i.upper() for i in set}{'WWW', 'IMOOC', 'COM'}
包含所有的正整数的集合

>>> set = {-, , -, , -, }>>> {i for i in list if i > }{, , }
包含两个字符的字符串集合

>>> {x + y for x in 'ABC' for y in 'XYZ'}{'AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ'}

字典推导
定义
列表推导用于快速生成一个列表,类似的,Python 同时提供了字典推导用于快速生成一个字典,语法如下:

{key:value for item iteratable}
可以认为它使用如下代码创建了一个字典:

dict = {}for item iteratable:dict[key] = value
在第 1 行,创建一个空的字典

在第 2 行,创建一个循环语句,遍历 iteratable

在第 3 行,在循环中,向字典添加键值对

与列表推导类似,字典推导也支持 if 语句进行选择,语法如下:

{expression for item iteratable if condition}
可以认为它使用如下代码创建了一个集合:

dict = {}for item iteratable:if condition:dict[key] = value
注意,在第 3 行,只有满足条件,才会将元素添加到字典中。

应用举例
创建从小写到大写的映射

>>> list = ['www', 'imooc', 'com']>>> {i:i.upper() for i in list}{'www': 'WWW', 'imooc': 'IMOOC', 'com': 'COM'}
对字典进行筛选

>>> all_students = {'tom': , 'jerry': , 'mike': , 'john': }>>> good_students = {item[]:item[] for item in all_students.items() if item[] > }>>> good_students{'tom': , 'mike': }
在第 1 行,创建一个包含 4 个学生的集合,姓名作为键,成绩作为值

tom 的成绩为 95 分

jerry 的成绩为 80 分

mike 的成绩为 99 分

john 的成绩为 70 分

在第 2 行,在原有的集合中选择成绩大于 90 分的学生,构造一个新的集合

item [0] 是姓名

item [1] 是成绩

for item in all_students.items (),遍历 all_students

循环变量 item 是一个包含两个元素的元组

if item [1] > 90,选择成绩大于 90 分

item [0]:item [1],使用 item [0] 作为键,使用 item [] 作为值

对字典进行筛选

>>> all_students = {'tom': , 'jerry': , 'mike': , 'john': }>>> good_students = {name:grade for name,grade in all_students.items() if grade > }>>> good_students{'tom': , 'mike': }
这个例子与上个例子完成相同的功能,但是使用更简洁的语法

在第 1 行,创建一个包含 4 个学生的集合,姓名作为键,成绩作为值

tom 的成绩为 95 分

jerry 的成绩为 80 分

mike 的成绩为 99 分

john 的成绩为 70 分

在第 2 行,在原有的集合中选择成绩大于 90 分的学生,构造一个新的集合

使用变量 name 表示该元组的第 0 项

使用变量 grade 表示该元组的第 1 项

for name,grade in all_students.items (),遍历 all_students

循环变量是一个包含两个元素的元组,‘name,grade’ 表示该元组

if grade > 90,选择成绩大于 90 分

name:grade,使用 name 作为键,使用 grade 作为值

推导式这种方式能都快速帮我们生成我们想要的列表,集合或者字典等等。极大的加快了我们的开发速度。假如你是一位测试人员,需要大量的假数据来测试程序,这个时候推导式这种方式就很适合你。

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章