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)
  • 相关阅读:
    微信带参数的小程序码生成并上传到七牛云(java)
    数据结构-数组和广义表-思维导图
    数据结构-串-思维导图
    数据结构-栈与队列-思维导图
    数据结构-线性表-思维导图
    python 拆分csv文件
    记录自己写js一个bug
    win10快捷键收藏
    重装系统win10最新版(完整版)
    formController的函数的基本作用
  • 原文地址:https://www.cnblogs.com/sunshuhai/p/12404915.html
Copyright © 2011-2022 走看看