zoukankan      html  css  js  c++  java
  • Python 列表集合 字典推导式、生成器表达式

    Python 列表集合 字典推导式、生成器表达式

    列表推导式

    1. 循环模式
     l1 = [i for i in range(1,11)]
     l2 = [i ** 2 for i in range(100)]
     l3 = [f'python{i}' for i in range(50)]
    
    1. 筛选模式:

      l1 = [i for i in range(1,31) if i % 3 == 0]
      
    2. 嵌套循环:

      names = [['tom','billy','jefferson'],['wesley','steven','jennifer']]
      
      e = [ name for i in names for name in i if name.count('e') == 2]
      
      e = ['jefferson','wesley','steven','jennifer']
      

    生成器表达式 # [] 变 ()

    1. 循环模式:

      g = (i for i in range(1,11))
      print(next(g))         #1 
      print(next(g))		   #2
      
    2. 筛选模式

      g = (i for i in range(50) if ...)
      
      print(next(g))         #1 
      print(next(g))		   #2
      

    优缺点:

    1. 列表推导式-缺点:

      ​ 有毒,不要太着迷

      ​ 超过三层循环才能构建成功的,不建议使用

      ​ 无法使用Debug 进行排错

    2. 列表推导式-优点:

      ​ 一行结构,简单

      ​ zb (23..)

      porker = [ i for i in range(2,11)] + list('JQKA')
      # [2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']
      

    列表推导式和生成器表达式的区别:

    写法上 [] ()

    iterable iterator

    字典推导式:

    list1 = ['jay','jj','meet']
    list2 = ['周杰伦','林俊杰','panda']
    mdict = {list2[i]: list[1] for i in range(len(list1))}
    #{'周杰伦': 'jay', '林俊杰': 'jj', 'panda': 'meet'}
    

    集合推导式:

    {i for i in range(1,11)}
    
  • 相关阅读:
    用Inno Setup来解决.NetFramework安装问题
    NSIS安装制作基础教程[初级篇], 献给对NSIS有兴趣的初学者
    NSIS
    Nullsoft教程 NSIS初学者图文教程一
    flex 实例Demo
    计算机组成原理
    Spring知识点提炼
    JAVA Web从前端到后台常用框架介绍
    使用navicat将mysql转换成sqlserver
    JDK 5 ~ 10 新特性倾情整理!
  • 原文地址:https://www.cnblogs.com/pandaa/p/12038430.html
Copyright © 2011-2022 走看看