zoukankan      html  css  js  c++  java
  • 净心诀---python3生成器进阶

    列表推导式

    把需要用一个函数写成的小功能,利用一行表达式完成

    例子:

     1 l = [1,2,3,4,5]
     2 # 所有的偶数都放到新的列表中
     3 # 正常函数
     4 def Lst():
     5     li = []
     6     for i in l:
     7         if i%2 == 0:
     8             li.append(i)
     9     return li
    10 
    11 li = Lst()
    12 print(li)
    13 
    14 # 列表推导式
    15 ls = [i for i in l if i%2 == 0]
    16 print(ls)

    练手题:

     1 # 30以内所有能被3整除的数
     2 ls1 = [i for i in range(31) if i%3 == 0]
     3 print(ls1)
     4 # 30以内所有能被3整除的数的平方
     5 ls2 = [i**2 for i in range(31) if i%3 == 0]
     6 print(ls2)
     7 # 找到嵌套列表中名字含有两个'e'的所有名字
     8 names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley'],['Alice']]
     9 ls = [name for lst in names for name in lst if name.count('e') == 2]
    10 print(ls)

    生成器表达式:

    与列表表达式写法一致,不同在于列表表达式中的 [ ] 换成了()

    生成器取值的方式

        1.gen.__next__
        2.for n in gen:pass
        3.list(gen)

    思考:

    题:

     1 def add(n,i):
     2     return n+i
     3 
     4 def test():
     5     for i in range(4):
     6         yield i
     7 
     8 g=test()
     9 for n in [1,10]:
    10     g=(add(n,i) for i in g)
    11 
    12 print(list(g))

    =============================

    lambda 函数写法

    【lambda 参数 :具体函数】

    例子:

    a = lambda a,b : a if a>b else b

    b = lambda a : '偶' if a%2==0 else '奇'

    c = lambda a : abs(a)

    print(a(3,2))

    print(b(2))

    print(c(-5))

  • 相关阅读:
    pandas 的pd.cut()数据分箱
    pandas 的groupby()
    pandas 的DataFrame.apply()
    天池二手车_特征工程
    numpy简单的笔记
    python 面向对象编程的@property
    mybatis 复杂sql语句
    mybatis Lombok
    mybatis 获取 sqlSession
    mybatis @Param 注解
  • 原文地址:https://www.cnblogs.com/zakker/p/12056114.html
Copyright © 2011-2022 走看看