列表推导式 生成器表达式

推导式 comprehensions(又称解析式):是 Python 中很强大的、很受欢迎的特性,具有语言简洁,速度快等优点

列表推导式 就是一个简单的公式,我们用这个列表推导式,把你好几行的for循环的过程给一行能解决掉,但是这个过程你必须放在列表的框中[  ]

一般用法:

#循环模式
#[经过加工的i for i in 可迭代对象]

 

#筛选模式
#[经过加工的i for i in 可迭代对象 if 条件 筛选]

 

比如你要将1-12的数字都加入一个列表中 ,这个时候你用for是最简便的

li = []  #新建一个列表  把所有的信息都加入其中
for i in  range(1, 12):  #循环遍历1-12
    li.append(i)
print(li)

#你以为这就是你最简便的方法吗 NO 最简便的方式 在下面呢
这就是列表的推导式
l1 = [i for i in range(1,13)]  #用列表的推导式来 做
print(l1)


生成器表达式:

其实就是和列表推导式 差不多 但是它的外部用的不是列表号  而是括号

l_obj = ('python %s期'% i for i in range(1,12))  #生成器生程式就是和列表推导式换了括号
print(l_obj)
print(l_obj.__next__())  #打印这个生成器生成式第一个元素
print(l_obj.__next__())#打印这个生成器生成式第二个元素

 

#列表推导式:一目了然,占内存。
#生成器表达式:不易看出,节省内容。

推导式练习:

l2 = [i*i for i in range(1,11)]   #用列表推导式来做一个1-10的所有数字的平方
print(l2)

#打印1-9的偶数
l3 = [i for i in range(1,10) if i %2 == 0]  
print(l3)

#打印1-30内的所有的能整除3的数字
l3 = [i for i in range(31) if i %3 == 0]
print(l3)

#求一个列表中的嵌套的列表 然后把里面的元素含有两个e的元素打印出来
names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
m = [name for i in names for name in i if name.count('e')==2]
print(m)

推导式前面加返回的变量  后面就是for循环然后和可迭代的对象  还可以加其他的判断语句

生成器生程式只是列表的推导式给它的括号 改变下 然后生程式的取值也是按照__next__()方法来取值的

字典的推导式:

#去一个字典中的key对应的value的key给返回出来
mcase = {'a':10,'b':34}
mcase_freque={ mcase[k]:k for k in mcase}  #把字典中的对应的key和value翻转并且给输出
print(mcase_freque)

 

转载于:https://www.cnblogs.com/zhaoyunlong/p/8719134.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值