首页 > 编程知识 正文

python推导式去重,python推导式的优点

时间:2023-05-04 07:08:59 阅读:184209 作者:2829

推导式 推导式的定义:一、列表(list)推导式列表推导式的应用1、将lst中每一个元素进行平方后放入到一个新列表中2、 求出lst 中是奇数的值,然后放入到一个新列表中3、求列表中所有大于2的偶数进行平方计算4、 将一个嵌套列表转换成一个一维列表5、现在有一列表 lst = [[1,2,3],[4,5,6],[7,8,9]]要求出1/4/7 和 1/5/9 元素6、面试题 二、字典推导式字典推导式的应用1、将字典中的key和value 进行对换2、zip()函数 三、集合推导式练习,计算列表中每个值的平方,自带去重功能 总结

推导式的定义: 推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列。推导式包括:1.列表(list)推导式 2.字典(dict)推导式 3.集合(set)推导式。 一、列表(list)推导式 列表推导式(list comprehension)是利用其它列表创建新列表的一种方式,工作原理类似for循环,即可对得到的元素进行转换或者筛选。列表推导式的基本格式:变量名=[表达式 for 变量 in 列表] 或者 变量名= [表达式 for 变量 in 列表 if 条件]执行流程:遍历出列表中的内容给变量,表达式根据变量值进行逻辑运算。或者遍历列表中的内容给变量,然后进行判断,符合的值在给表达式。 列表推导式的应用 1、将lst中每一个元素进行平方后放入到一个新列表中

第一种方式

lst = [1, 2, 3, 4, 5, 6, 7, 8]# 1lst_new = [i * i for i in lst]print(lst_new)

第二种方式

def square(num): return num * numnew_lst = [square(i) for i in lst]print(new_lst) 2、 求出lst 中是奇数的值,然后放入到一个新列表中 lst = [1, 2, 3, 4, 5, 6, 7, 8]lst1 = [i for i in lst if i % 2 == 1]print(lst1) # [1, 3, 5, 7] 3、求列表中所有大于2的偶数进行平方计算 lst = [1, 2, 3, 4, 5, 6, 7, 8]new_lst = [i ** 2 for i in lst if i % 2 == 0 if i > 2]print(new_lst) # [16, 36, 64] 4、 将一个嵌套列表转换成一个一维列表 lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]转换成:lst2=[1, 2, 3, 4, 5, 6, 7, 8, 9]使用列表推导式 new_lst = [i for lst1 in lst for i in lst1]print(new_lst) 5、现在有一列表 lst = [[1,2,3],[4,5,6],[7,8,9]]要求出1/4/7 和 1/5/9 元素 lst1 = [lst[i][0] for i in range(len(lst))]print(lst1)lst2 = [lst[i][i] for i in range(len(lst))]print(lst2) 6、面试题 求:a[0](2),a[1](2),a[2](2)的值 a = [lambda x: x * i for i in range(3)]print(a[0](2))print(a[1](2))print(a[2](2))输出结果都为4

注释: 这里的lambda函数会让后面for循环产生的数字在栈中被覆盖,即for循环产生的数字只会取到最后一个,所以在输出的a[0], a[1], a[2]是同一个数字——2;至于小括号中的数字是对lambda函数中传入的参数,故输出结果都为4。

二、字典推导式 字典推导式列表推导式思想的延续,语法差不多,只不过产生的是字典而已。字典推导式格式:变量名={....} 字典推导式的应用 1、将字典中的key和value 进行对换

第一种方法

dic = {'a': 10, 'b': 11}new_dic = {}for key, value in dic.items(): new_dic[value] = keyprint(new_dic)

第二种方法

dic = {'a': 10, 'b': 10}new_dic = {value: key for key, value in dic.items()}print(new_dic) 2、zip()函数

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同

dic = {k:v for k,v in zip(list("ABC"),list("123"))}#{'A': '1', 'B': '2', 'C': '3'} 三、集合推导式 集合推导式跟列表推导式非常相似,唯一区别在于用{}代替[]

栗子:

L = [1,1,1,2,2,2,3,4,5,6,7]set = {i for i in L} 练习,计算列表中每个值的平方,自带去重功能 squared = {x**2 for x in [1, -1, 2]}print(squared) 总结

由上面的代码可以看出来,推导式不管是列表,字典还是集合,他们都有着填充序列和简化代码的能力

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。