zoukankan      html  css  js  c++  java
  • 迭代

    (一)      生成器表达式,列表推导式
    1.
    把列表解析的[]换成()得到的就是生成器的表达式
    2.
    列表解析与生成器表达式都是一种便利的编程方式,只不过生成器表达式更节省内存

    3Python不但使用迭代器协议,for循环变得更加通用. 大部分内置函数,也是使用迭代器协议访问对象的.

    (二)   下面是一个以列表推导式为例的推导详细格式,也同样适用于其他推导式.

    Variable = [out_exp_res for out_exp in input_list if out_exp == 2]

             Out_exp_res:   #列表生成元素表达式,可以是有返回值的函数

             For out_exp in input_list:      #迭代input_list out_exp 传入 out_exp_res

             If out_exp == 2;  #根据条件过滤那些值#

    # 30以内所有能被3整除的数
    l1 = [num for num in range(30) if num % 3 == 0]
    print(l1)

    # 30以内所有能被3整除的数的平方
    l2 = [num**2 for num in range(30) if num % 3 == 0]
    print(l2)

    names = [[
    'Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
            
    ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
    l3 = [alone
    for name in names for alone in name if alone.count('e') == 2]
    print(l3)
    # 生成器表达式
    l5 = ('python%s' % i for i in range(14))
    print(l5)
    print(l5.__next__())
    # 字典的推导式
    #
    讲一个字典的keyvaule对调
    mcase = {'a': 10, 'b': 34}
    l4 = {mcase[key]: key
    for key in mcase }
    print(l4)
    # 合并大小写对应的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.keys()} #如果get没有找到给的函数,后面可以加一个返回的默认值,如上面的函数里的get(k.lower(), 0)
    print(mcase_frequency)

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

    # 1: 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母
    lis2 = ['dqdasdas', 'qeasdasv', 'qw', 'g']
    l8 = [lis
    for lis in lis2 if len(lis) > 3]
    print
    (l8)

    (一)      生成器表达式,列表推导式
    1.
    把列表解析的[]换成()得到的就是生成器的表达式
    2.
    列表解析与生成器表达式都是一种便利的编程方式,只不过生成器表达式更节省内存

    3Python不但使用迭代器协议,for循环变得更加通用. 大部分内置函数,也是使用迭代器协议访问对象的.

    (二)   下面是一个以列表推导式为例的推导详细格式,也同样适用于其他推导式.

    Variable = [out_exp_res for out_exp in input_list if out_exp == 2]

             Out_exp_res:   #列表生成元素表达式,可以是有返回值的函数

             For out_exp in input_list:      #迭代input_list out_exp 传入 out_exp_res

             If out_exp == 2;  #根据条件过滤那些值可以

    # 列表推导式
    # 30
    以内所有能被3整除的数
    l1 = [num for num in range(30) if num % 3 == 0]
    print(l1)

    # 30以内所有能被3整除的数的平方
    l2 = [num**2 for num in range(30) if num % 3 == 0]
    print(l2)

    names = [[
    'Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
            
    ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
    l3 = [alone
    for name in names for alone in name if alone.count('e') == 2]
    print(l3)
    # 生成器表达式
    l5 = ('python%s' % i for i in range(14))
    print(l5)
    print(l5.__next__())
    # 字典的推导式
    #
    讲一个字典的keyvaule对调
    mcase = {'a': 10, 'b': 34}
    l4 = {mcase[key]: key
    for key in mcase }
    print(l4)
    # 合并大小写对应的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.keys()} #如果get没有找到给的函数,后面可以加一个返回的默认值,如上面的函数里的get(k.lower(), 0)
    print(mcase_frequency)

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

    # 1: 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母
    lis2 = ['dqdasdas', 'qeasdasv', 'qw', 'g']
    l8 = [lis
    for lis in lis2 if len(lis) > 3]
    print(l8)
  • 相关阅读:
    NAIPC 2019-It’s a Mod, Mod, Mod, Mod World(类欧几里德模板)
    BAPC 2018 Preliminaries-Isomorphic Inversion(字符串哈希)
    Cubemx 生成工程代码失败的原因
    共生滤波器相关论文分析
    西瓜书6.2 matlab的libsvm使用
    西瓜书4.4 基于基尼指数选择划分的决策树 预剪枝与后剪枝
    西瓜书4.3 编写过程 决策树
    西瓜书 5.5 编写过程(标准BP与累计BP)
    西瓜书3.4 解题报告(python 多分类学习 十折交叉法)
    西瓜书3.3 尝试解题(python)对率回归 极大似然估计
  • 原文地址:https://www.cnblogs.com/kangxi/p/9206311.html
Copyright © 2011-2022 走看看