python 之 推导式

来源:互联网 发布:诚邀辣妹 网络性与爱 编辑:程序博客网 时间:2024/04/28 10:32

 推导式 : 英文 comprehension

 支持推导式的有列表list      字典dict      集合set      注意元组没有 推导式,如果你那样去写,他会变成一个generator生成器对象


 推导式会让代码更加简洁,易懂,更加pythonic



列表:


 [       expression        for   .....   if .....  ]         #生成了一个列表对象


 其中:expression 是加入到列表中的元素的表达式 , 后面的for   if  则是对这个表达式进行重复和筛选的语句

#!/usr/bin/env python3#coding:utf-8li1 = [1 for i in range(5)]    print(li1)    #[1, 1, 1, 1, 1]li2 = [i for i in range(1,11) if i%2==0]print(li2)    #[2, 4, 6, 8, 10]li3 = [char.upper() for char in 'hello']print(li3)   #['H', 'E', 'L', 'L', 'O']li4 = [i*i for i in range(10)]print(li4)   #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]li5 = [(m,n) for m in [1,2,3] for n in "abc"]print(li5)#[(1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b'), (2, 'c'), (3, 'a'), (3, 'b'), (3, 'c')]


集合的推导式和列表一样,只不过集合或过滤掉重复 的元素




字典:

#!/usr/bin/env python3#coding:utf-8s = 'hello'#字符串中每个字符出现的次数 char : times d1 = {char:s.count(char) for char in s }print(d1)#这个字典在生成的时候发生了键的覆盖:'hello' 中'l' 出现了2次#改进:d2 = {char:s.count(char) for char in set(s)}print(d2)









0 0
原创粉丝点击