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)
  • 相关阅读:
    2019 ICPC Malaysia National H题
    欧拉定理证明
    P3384 【模板】树链剖分
    HDU 6070 Dirt Ratio(线段树、二分)
    51Nod 1571 最近等对(线段树、离线查询)
    51Nod 1781 Pinball(线段树、dp、离散化)
    51Nod 1494 选举拉票(权值线段树)
    51Nod 1766 树上的最远点对(欧拉序、lca、线段树区间合并)
    lintcode-179-更新二进制位
    lintcode-178-图是否是树
  • 原文地址:https://www.cnblogs.com/kangxi/p/9206311.html
Copyright © 2011-2022 走看看