python3 推导式大总结

推导式 --总结并引出 生成器推导式

 

##列表推导式

>>> a = [i for i in range(100) if not(i%2) and i%3] ##注意列表是中括号 三项内容 变量 循环体 判断条件
>>> a #输出为符合判断条件的结果 100以内能被2整除的数字
[2, 4, 8, 10, 14, 16, 20, 22, 26, 28, 32, 34, 38, 40, 44, 46, 50, 52, 56, 58, 62, 64, 68, 70, 74, 76, 80, 82, 86, 88, 92, 94, 98]
>>>

 

##字典推导式

>>> b = {i : i %2 ==0 for i in range(20)} ##字典推导式注意 那个独特的 冒号 ':' 三项内容 变量 条件 循环体
>>> b ##和列表推导式不一样的就是输出的结果,如果判断条件成立 输出就是True 否则输出False
{0: True, 1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False, 10: True, 11: False, 12: True, 13: False, 14: True, 15: False, 16: True, 17: False, 18: True, 19: False}
>>>

 

##集合推导式

>>> c ={i for i in [1,1,2,5,6,48,7,9,6,5,4,1,2,3,65,2,6,52,6,9,5]} ##集合推导式要注意的是 他和字典推导式的区别和联系 练习是 外部都是用的[]中括号的 不同就很明显了 两项内容 变量 循环体 
>>> c ##输出内容 为本例中的列表的非重复输出
{1, 2, 3, 4, 5, 6, 7, 9, 48, 52, 65}
>>> 

'''集合(set)是一个无序不重复元素的序列。
它的主要作用如下:
去重,把一个列表变成集合,就自动去重了
关系测试,测试两组数据之前的交集、差集、并集等关系
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。'''    --------这一句总结来自网友 @奋斗中的咸鱼

###字符串推导式 看看行不行

>>> d = "i for i in 'I love you!'"
>>> d
"i for i in 'I love you!'" ##我* 果然不可以 ,我们看到 这个双括号中的字符串 被原版的打印出来了 并没有做任何和其他推导式那样子的工作
>>>

###那么还有什么可以玩一下推导式那 ,是不是还有元组推导式没有玩过 ,好吧 下面翻她的牌

>>> e = (i for i in range(10)) ###元组使用小括号括起来的
>>> e
<generator object <genexpr> at 0x00000000034305E8> ###哎 怎回事,输出有点不一样啊,第一个单词好像叫做生成器的,对了,这个是生成器的推导式了,这里就是引出这个家伙的
>>> next(e) ##是生成器就可以使用next()这个函数类查看了
0
>>> next(e)
1
>>> next(e)
2
>>> next(e)
3
>>> for i in e: ##想了一下 上边的一个一个输出太慢了 来一个循环吧 把剩下的内容搞出来
print(i)


4
5
6
7
8
9
>>> 

#至此我们看到了原来元组是没有推导式的,他的书写格式原来是生成器的推导式,好吧记下来吧!元组原来和生成器还有这样的私交啊!

##还有一句话要说,这里我们找了生成器的推导式,那么生成器还有一个比较骚的操作 ,那就是生成器推导式如果作为一个函数的参数时,他可以直接写推导式而不用带上自己的小括号里(把衣服拔掉了 嘿嘿) 样子就像下边的

>>> sum((i for i in range(10)))
45

>>> sum(i for i in range(10))
45
>>> 

##这个操作就是上边的对比了,去掉小括号吧(我养你)

 

感谢:小甲鱼

 

posted @ 2018-03-29 17:26  十万行代码  阅读(4015)  评论(0编辑  收藏  举报