python-推导式

推导式的定义:

推导式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]
# 1
lst_new = [i * i for i in lst]
print(lst_new)

第二种方式

def square(num):
    return num * num


new_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] = key
print(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)

总结

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

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值