基于微软Ling框架下的函数式编程

基于微软Ling框架下的函数式编程

----------------------------------------------**## 生成器推导式**----------------------------------------------
def my_enum(list_number):
    # index=0
    # for i in list_number:
    #     yield index,i
    #     index+=1
    for i in range(len(list_number)):
        yield  i,list_number[i]#生成器返回结果
        
list=[1,23,23,4,5,34,5,6,56,34]
 for i,r in my_enum(list):
     print(i,r)
     
#将两个列表元素合并
list01=['宋悟空','猪八戒','啥僧','唐三奘']#合并,形成新元祖
list02=[1,2,3,4,5]
 for item in zip(list01,list02):
     print(item)

def my_zip(list01,list02):
    for item in range(len(list01)):
        yield (list01[item],list02[item])
 for i in my_zip(list01,list02):
    print(i)

def my_zip1(*args):
    #将星号元祖args第一个参数的长度生成索引len(args[0])
    for i in range(len(args[0])):
        list=[]
        for item in args:
            list.append(item[i])
        yield tuple(list)
        
for item in my_zip1(list01,list02):
    print(item)
    
list03=[1,'a',True,False,18.3,6,18,'b']
def find01():
    for item in list03:
        if type(item)==int:#找出整数
            yield item
            
 for i in find01():
     print(i)
     
re1=(item for item in list03 if type(item)==int)#生成器推导式
for i in re1:
    print(i)
re=[item for item in list03 if type(item)==int]#liebiao推导式
for i in re:
    print(i)
总结:
    1.yield 生成器,大致意思是将结果放到next方法里边了,必须用next方法才可以得到结果,for内部具有next方法,因此可以使用for遍历得到结果,yield 每次只拿出拿出一个结果,for/next方法将可以拿出全部结果;
2.re1=(item for item in list03 if type(item)==int)#生成器推导式
    for i in re1:
        print(i)
re=[item for item in list03 if type(item)==int]#列表推导式
for i in re:
    print(i)
区别生成器找到一个返回一个,列表推导式全部找到才返回 ,生成器更适应大数据时代,更节省空间
    ```
    ```python
   ----------------------------------------- **函数式编程**-----------------------------------------------------
    ###做三个函数,将函数做为参数传入函数并可以执行这个作为参数的函数
def fun01():
    print('fun01执行喽')
    
def fun02():
    print('fun02执行喽')
    
def fun03(func):
    print('fun03执行喽')
    func()
#将函数赋值给变量
 re1=fun01
 re1()#用变量调用函数
 fun03(fun01)#将函数传入
 fun03(fun02)
 fun03(fun01)

list=[1,23,2,32,32,3,4,354,435,56,67,57]
#在列表中查找所有偶数
#在列表中查找所有大于10数
#在列表中查找所有范围在10---50之间的数

def fund01(item):
    return  item % 2==0
    
def fund02(item):
    return  item>10
    
def fund03(item):
    return  10<item<50
    
def find(func):
    for item in list:
        if  func(item):
            yield item
            
 for i in find(fund02):
     print(i)
     
from Lister_hper.lister_hlper import *#调用模块
from exercise02 import *#调用模块

 def found04(item):
     return item.name=='葵花宝典'
     
 def found05(item):
    return item.tm>0
    
 def found06(item):
     return item.name=='葵花宝典'
result=Lister_hpler.find(list_skill,lambda item:(item.name)=='葵花宝典')
for i in result:
    print(i)
    lambda 解决了函数式编程中"封装"麻烦问题.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值