zoukankan      html  css  js  c++  java
  • 【python之路48】生成器表达式、推导式

    一、生成器表达式

    1、 生成器表达式为:

    (结果 for 变量 in 可迭代的对象 if 条件)--》if条件可以省略

    ge = (i for i in range(1, 11))
    print(ge)  # <generator object <genexpr> at 0x0000023EA176B5C8>
    
    for elment in ge:
        print(elment)  # 结果从1打印到10
    
    
    # # 实际相当于
    # def ge():
    #     for i in range(1, 11):
    #         yield i
    # 
    # for i in ge():
    #     print(i)

    二、推导式

    1、列表推导式

    [结果 for 变量 in 可迭代的对象 if 条件]        --》if条件可以省略

    li = [i for i in range(1,11)]
    print(li)  #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    li2 = [i for i in range(1,11) if i % 2 == 0]
    print(li2) #[2, 4, 6, 8, 10]

    2、字典推导式

    [key:value for 变量 in 可迭代的对象 if 条件}        --》if条件可以省略

    li1=["黑旋风","花和尚","豹子头","行者"]
    li2=["李逵","鲁智深","林冲","武松"]
    
    dic = {li1[i]:li2[i] for i in range(len(li1))}
    print(dic)
    
    #打印结果
    #{'黑旋风': '李逵', '花和尚': '鲁智深', '豹子头': '林冲', '行者': '武松'}

    3、集合推导式

    {结果 for 变量 in 可迭代的对象 if 条件}        --》if条件可以省略}

    se = {i for i in range(1,11)}
    print(se)  #{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

    4、注意:没有元组推导式,元组推导式的格式被生成器表达式占用

    
    

    补充列表推导式:

    # 写程序生成下面的序列:
    # [[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4, 6, 8], [0, 3, 6, 9, 12]]
    
    # 有N中方法,下面一种方法,分别用循环和列表推导式的方式实现
    
    # li = []
    # for r in range(4):
    #     #0-4
    #     li.append([])
    #     for c in range(5):
    #         li[r].append(r * c)
    # print(li)
    
    re =[[r*c for c in range(5)] for r in range(4)]
    print(re)
  • 相关阅读:
    Math类的用法
    c#中和java中可变参数对比
    c#中泛型集合directory和java中map集合对比
    C#调用短信接口(通过简单的工厂模式整合多个短信平台)
    C#用网易邮箱发送邮件(同步异步)
    新浪云-PHP实现上传原图,缩略图
    PHP 继承,组合,单模式,GUID,等混合实例
    ASP.Net MVC @Html类
    ASP.net MVC 无法初始化 ASP.NET Simple Membership 数据库
    PHP 单列模式实例讲解以及参考网址
  • 原文地址:https://www.cnblogs.com/sunshuhai/p/12404915.html
Copyright © 2011-2022 走看看