Open KeepInLove1006 opened 5 years ago
推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体,共有三种推导,在Python2和3中都有支持
列表推导能非常简洁的构造一个新列表:只用一条简洁的表达式即可对得到的元素进行转换变形
基本格式如下:
格式[元素(或计算方法) for循环(允许多个) if语句]
lst = [ x for x in (1,2,3) if x == 1]
例子1:
过滤条件可有可无,取决于实际应用
lst = [x * x for x in range(1,10)] print(lst)
结果:
[1, 4, 9, 16, 25, 36, 49, 64, 81]
例子2:
lst4 = [ a for a in range(1,20) if a % 2 ==0 ] print(lst4)
[2, 4, 6, 8, 10, 12, 14, 16, 18]
例子3:
生成器表达式
multiples = (i for i in range(30) if i % 3 is 0) print(multiples) for i in multiples: print(i)
<generator object<genexpr> at 0x0000000000542E58> 0 3 6 9 12 15 18 21 24 27
<genexpr>
通过结果分析出显示了generator 这就是生成器的标识,不要以为用小括号就是set,tuple.这个注意下:他自己是可以遍历的
和上边的区别是【】变成了{}, 里面的原理是一样的,换汤不换药
lst1 ={a : a=='baijing' for a in {'bailian': 1 , 'baijing': 5, 'jingchu': 10, 'huasheng': 7 , 'qiaosong': 2 } } print(lst1)
{'bailian': False, 'baijing': True, 'jingchu': False, 'huasheng': False, 'qiaosong': False}
它们跟列表推导式也是类似的。 唯一的区别在于它使用大括号{}。
squared = {x**2 for x in [1, 1, 2,23,5,5,5,7,7,81] } print(squared) print(type(squared))
结果:{1, 6561, 4, 49, 529, 25}
'''集合(set)是一个无序不重复元素的序列。 它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集、差集、并集等关系 set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。''' --------这一句总结来自网友 @奋斗中的咸鱼
a = [1,2,3,4,5,6,7,8,9] b = [] for x in a: if x % 2 ==0: b.append(x) print( x )
结果:[2, 4, 6, 8]
上面这个循环的话,在python里可以用推导式用一行代码就可以搞定!
一行?你在逗我么?
lst = [x for x in range(1,10) if x % 2 == 0 ] print(lst)
对python就是可以为所欲为!哈哈哈~
python3的三种推导式
推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体,共有三种推导,在Python2和3中都有支持
第一种:列表推导式(list)
列表推导能非常简洁的构造一个新列表:只用一条简洁的表达式即可对得到的元素进行转换变形
基本格式如下:
格式[元素(或计算方法) for循环(允许多个) if语句]
例子1:
过滤条件可有可无,取决于实际应用
结果:
[1, 4, 9, 16, 25, 36, 49, 64, 81]
例子2:
结果:
[2, 4, 6, 8, 10, 12, 14, 16, 18]
例子3:
生成器表达式
结果:
<generator object
<genexpr>
at 0x0000000000542E58> 0 3 6 9 12 15 18 21 24 27通过结果分析出显示了generator 这就是生成器的标识,不要以为用小括号就是set,tuple.这个注意下:他自己是可以遍历的
和上边的区别是【】变成了{}, 里面的原理是一样的,换汤不换药
结果:
{'bailian': False, 'baijing': True, 'jingchu': False, 'huasheng': False, 'qiaosong': False}
三、集合推导式(set)
它们跟列表推导式也是类似的。 唯一的区别在于它使用大括号{}。
结果:{1, 6561, 4, 49, 529, 25}
'''集合(set)是一个无序不重复元素的序列。 它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集、差集、并集等关系 set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。''' --------这一句总结来自网友 @奋斗中的咸鱼
推导式原理:
结果:[2, 4, 6, 8]
上面这个循环的话,在python里可以用推导式用一行代码就可以搞定!
一行?你在逗我么?
结果:[2, 4, 6, 8]
对python就是可以为所欲为!哈哈哈~