码迷,mamicode.com
首页 > 其他好文 > 详细

4-4日 列表推导式,生成器推导式

时间:2018-04-04 23:17:04      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:就是   red   数组   style   value   blog   alice   pos   nbsp   

1,列表推导式就是在列表中进行for 循环if语句判断,最多两个for,一个if判断

#求1到30 被3整除的数的平方
li = [i*i for i in range(1,31)if i%3 == 0]
print(li)
li = [i for i in range(1,101)if i%2 == 0]
l2 = [i for i in range(1,101)if i%2 == 1]
print(li)
print(l2)
#求列表中带两个‘e‘名字
names = [[Tom, Billy, Jefferson, Andrew, Wesley, Steven, Joe],
         [Alice, Jill, Ana, Wendy, Jennifer, Sherry, Eva]]
li = [name for i in names for name in i if name.count(e)==2]
print(li)

用列表推导式能够构建的任何列表,用别的都可以构建。一行,简单,感觉高端。但是不易排错。

l2 = [python%s期%i for i in range(1,12)]
print(l2)

列表推导式有两种模式:

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

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

2, 生成器推导式

把列表解析的  [  ]  换成  (  )  得到的就是生成器表达式。

l_obj = (python%s期%i for i in range(1,12))
print(l_obj)
print(l_obj.__next__())

3,字典推导式,

          1,将dic的键和值对调。

mcase = {a:10,b:33}
mcase_frequency = {mcase[k]:k for k in mcase}
print(mcase_frequency)

           2,合并大小写对应的value值,将k统一成小写

mcase = {a:10,b:33,A:8,Z:9}
mcase_frequency = {k.lower():mcase.get(k.lower(),0)+mcase.get(k.upper(),0)for k in mcase.keys()}
print(mcase_frequency)

4,集合的推导式

计算列表中每个值的平方,自带去重功能

squared = {x**2for x in [1,-1,2]}
print(squared)

例1:  过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母

例2:  求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表

例3:  求M中3,6,9组成的列表M = [[1,2,3],[4,5,6],[7,8,9]]

 

4-4日 列表推导式,生成器推导式

标签:就是   red   数组   style   value   blog   alice   pos   nbsp   

原文地址:https://www.cnblogs.com/yzxing/p/8717140.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!