zoukankan      html  css  js  c++  java
  • 生成器+三元表达式+列表生成式+生成器表达式

    一、生成器

    1、什么是生成器

      在函数内但凡出现yield关键字,再调用函数就不会执行函数体代码,会返回一个值,该值称之为生成器,生成器本质就是迭代器

    2、为什么要有生成器

     生成器是一种自定义迭代器的方式

     注:

      生成器在刚刚生成时不执行里面任何代码

    总结yield的功能

    1、提供一种自定义迭代器的方式

    2、yield可以暂停住函数,返回值

    yield  VS  return

    相同点:都是用在函数内,都可以返回值,没有类型限制,没有个数限制

    不同点:return只能返回一次值,yield可以返回多次值

    用yield写一个简单的range函数

    def my_range(start,stop,step=1)
        while stat<stop:
            yield start
            start+=step
    g=my_range(0,4)
    

     二、杂项

    1、三元表达式

    条件成立时返回值   if条件  else  条件不成立时返回值

    例如:

    def  max2(x,y)

      if x>y:

        return x

      else:

        return y

    x=10

    y=20

    max2(x,y)

    上述功能可以直接使用三元表达式实现:

    res=x  if    x>y   else   y

    print(res)

    2、列表生成式

    l=[item**2 for item in range(1,11)]

    print(1)

    names=['egon','alex_xx','wupeiqi','yuanhao']

    nums=[len(name) for name in names if not name.endswith('xx')]

    print(nums)

    3、字典生成式

    keys=['name','age','sex']

    values=['egon',18,'male']

    d={k:v for k,v in zip(keys,values)}

    print(d)

    3、生成器表达式

    g=(i  for  i  in  range(10))

      print(g)

  • 相关阅读:
    虚方法的调用是怎么实现的(单继承VS多继承)
    C++ Data Member内存布局
    删除单链表,你会吗?
    最近面试遇到的Windows相关的题目
    C# 文章导航
    移动端开发文章导航
    Vue源码阅读(一) 准备工作
    vue-router源码阅读(一) 内部探究
    Vuex源码阅读(二) store内的getters实现逻辑
    Vuex源码阅读(一) new Vuex.Store()内部探究
  • 原文地址:https://www.cnblogs.com/xiaocao736427460/p/9177985.html
Copyright © 2011-2022 走看看