VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 简明python教程 >
  • python基础(14):生成器、列表推导式(3)

") >= 2:
  •       result.append(name)
  • print(result)
  • # 推导式
  • gen = (name for first in names for name in first if name.count("e") >= 2)
  • for name in gen:
  •   print(name)
  • ⽣成器表达式和列表推导式的区别:
    1. 列表推导式比较耗内存,⼀次性加载,⽣成器表达式⼏乎不占⽤内存,使⽤的时候才分配和使⽤内存。
    2. 得到的值不⼀样,列表推导式得到的是⼀个列表,⽣成器表达式获取的是⼀个⽣成器。
    举个栗⼦。
    同样⼀篮⼦鸡蛋,列表推导式: 直接拿到⼀篮⼦鸡蛋。⽣成器表达式: 拿到⼀个老⺟鸡,需要鸡蛋就给你下鸡蛋。
    ⽣成器的惰性机制: ⽣成器只有在访问的时候才取值,说⽩了,你找他要他才给你值,不找他要,他是不会执⾏的。
    
    		
    1. def func():
    2.   print(111)
    3.   yield 222
    4. g = func() # ⽣成器g
    5. g1 = (i for i in g) # ⽣成器g1. 但是g1的数据来源于g
    6. g2 = (i for i in g1) # ⽣成器g2. 来源g1
    7. print(list(g)) # 获取g中的数据. 这时func()才会被执⾏. 打印111.获取到222. g完毕.
    8. print(list(g1)) # 获取g1中的数据. g1的数据来源是g. 但是g已经取完了. g1 也就没有数据
    9. print(list(g2)) # 和g1同理
    深坑==> ⽣成器,要值得时候才拿值。
    字典推导式:
    根据名字应该也能猜到,推到出来的是字典。
    
    		
    1. # 把字典中的key和value互换
    2. dic = {'a': 1, 'b': '2'}
    3. new_dic = {dic[key]: key for key in dic}
    4. print(new_dic)
    5. # 在以下list中. 从lst1中获取的数据和lst2中相对应的位置的数据组成⼀个新字典
    6. lst1 = ['jay', 'jj', 'sylar']
    7. lst2 = ['周杰伦', '林俊杰', '邱彦涛']
    8. dic = {lst1[i]: lst2[i] for i in range(len(lst1))}
    9. print(dic)
    集合推导式:
    集合推导式可以帮我们直接⽣成⼀个集合。集合的特点: ⽆序,不重复,所以集合推导式⾃带去重功能。
    
    		
    1. lst = [1, -1, 8, -8, 12]
    2. # 绝对值去重
    3. s = {abs(i) for i in lst}
    4. print(s)
    总结: 推导式有,列表推导式,字典推导式,集合推导式,没有元组推导式。

    
    相关教程
              
    关于我们--广告服务--免责声明--本站帮助-友情链接--版权声明--联系我们       黑ICP备07002182号