Python 集合推导
发布时间:2023-06-27 10:23:10 所属栏目:教程 来源:
导读:列表推导用于快速生成一个列表,类似的,Python 同时提供了集合推导用于快速生成一个集合,语法如下:
{expression for item iteratable}
可以认为它使用如下代码创建了一个集合:
s = set()for item iterata
{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 作为值 推导式这种方式能都快速帮我们生成我们想要的列表,集合或者字典等等。极大的加快了我们的开发速度。假如你是一位测试人员,需要大量的假数据来测试程序,这个时候推导式这种方式就很适合你。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |