zoukankan      html  css  js  c++  java
  • python基础17_列表推导式 vs 生成器表达式

    [ ] 列表推导式,是用简单的语法来生成列表,

    ( ) 生成器表达式,是用简单的语法创建个生成器。

    外观上仅括号不一样. 

    虽然写起来方便,但是读起来稍显费力,另外,不易调试。

    # 列表推导式
    print([i for i in range(9)])  # 原型
    print([i*i for i in range(9)])
    
    egg_list=['鸡蛋%s'%i for i in range(10)]
    print(egg_list)
    
    
    # 生成器表达式
    
    g = (i for i in range(10))
    print(g)
    print(g.__next__())
    # for i in g:
    #     print(i)
    
    # 生成器表达式 VS 列表推导式
    # 括号不一样
    # 返回的值不一样 >> 几乎不占用内存

    示例,嵌套,字典推导式,集合推导式

    #[每一个元素或者是和元素相关的操作 for 元素 in 可迭代数据类型]    #遍历之后挨个处理
    #[满足条件的元素相关的操作 for 元素 in 可迭代数据类型 if 元素相关的条件]   #筛选功能
    
    # #30以内所有能被3整除的数
    ret = [i for i in range(30) if i%3 == 0]  #完整的列表推导式
    g = (i for i in range(30) if i%3 == 0)    #完整的生成器表达式
    print(ret)
    print(g)
    #
    # #30以内所有能被3整除的数的平方
    ret = [i*i for i in range(30) if i%3 == 0]
    print(ret)
    
    
    # 嵌套列表中名字包含2个‘e’的所有名字
    names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Weseley', 'Steven', 'Joe'],
             ['Alice', 'Jill', 'Ana', 'Weendy', 'Jennifer', 'Sherry', 'Eva']]
    ret = [name for lst in names for name in lst if name.count('e') >=2]
    # ret = (name for lst in names for name in lst if name.count('e') ==2)
    print(ret)
    
    
    
    #字典推导式
    # 例一:将一个字典的key和value对调
    mcase = {'a': 10, 'b': 34}
    mcase_frequency = {mcase[k]: k for k in mcase}
    print(mcase_frequency)
    
    # 例二:合并大小写对应的value值,将k统一成小写
    mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
    mcase_frequency = {k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0) for k in mcase}
    print(mcase_frequency)
    
    #集合推导式,自带结果去重功能
    squared = {x**2 for x in [1, -1, 2]}
    print(squared)
    
    
    #各种推导式 : 生成器 列表 字典 集合
        #遍历操作
        #筛选操作
  • 相关阅读:
    SpringMVC 2.5.6 +Hibernate 3.2.0
    batch normalization在测试时的问题
    python loss layer: does not need backward computation?
    deconvolution layer parameter setting
    dlmread matlab
    概率图模型课本笔记(五)
    概率图模型课本笔记(四)
    概率图模型课本笔记(三)
    概率图模型课本笔记(二)
    概率图模型课本笔记(一)
  • 原文地址:https://www.cnblogs.com/frx9527/p/list_comprehension.html
Copyright © 2011-2022 走看看