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 >>>
##这个操作就是上边的对比了,去掉小括号吧(我养你)
感谢:小甲鱼