zoukankan      html  css  js  c++  java
  • 高阶函数_递归函数_内置函数

           最近挺喜欢纯音乐的,比如暴力一点的star sky、victory、go time、the mass...今天发现了一首特好安静的纯音乐,叫做桜(ying)道。清风推门开,疑是故人来,又是一年秋分至,门扉如旧,我该以什么理由想起你呢,以星月,以静默……对了,今天秋分。

    #Author:"haijing"
    #date:2018/9/23
    #上节回顾
    # s2=set('alvin')
    # print(s2) #打印 {'i', 'l', 'n', 'a', 'v'}
    # s2.add('op') #此时op作为一个整体加入到s2中去
    # print(s2) #打印{'i', 'l', 'op', 'n', 'a', 'v'}
    #
    # s3=set('alvin')
    # s3.update('op') #此时o和p分开加到s3中去
    # print(s3) #打印{'a', 'n', 'i', 'o', 'p', 'v', 'l'}
    #
    # #在集合中加数字,必须把数字放入列表中,如
    # s4=set([1,2,3])
    # print(s4)

    # def f(*arg):
    # print(arg)
    # a=[1,2,3]
    # f(a) #打印([1, 2, 3],),此时这个列表作为了一个元素
    # f(*a) #打印(1, 2, 3)

    # def f2(**kwargs):
    # print(kwargs)
    # b={'name':'haijing'}
    # f2(**b) #打印一个字典 {'name': 'haijing'}

    #高级函数
    # def f(n):
    # return n*n
    #
    # def f3(a,b,func): #这里的f即上面定义的函数
    # return func(a)+func(b)
    #
    # a = f3(1,2,f) #函数本身f()是一个对象,而函数的名字f是一个变量,函数名可以赋值
    # print(a)


    # def f():
    # def inner():
    # return 8
    # return inner()
    # a=f()
    # print(a) #此时打印的是8


    # def f():
    # def inner():
    # return 8
    # return inner
    # a=f() #此时a就是inne()这个函数的地址
    # print(a) #此时打印的是inner()这个函数的地址
    # b=a()
    # print(b) #此时打印的就是8了

    #递归函数
    #阶乘 5!=5*4*3*2*1=120
    # def fat(n):
    # # for i in range(n): #i=0、1、2、3、4......n-1
    # # ret = ret*i #此时ret恒为零,所以不行

    #改进,用循环实现
    # def fat(n):
    # ret = 1
    # for i in range(1,n+1): #i=1、2、3、4......n-1,n此时i从1开始取
    # ret = ret*i #此时ret恒为零,所以不行
    # return ret
    # print(fat(5)) #打印120

    #再改进,用递归函数,自己调用自己,但是效率低
    # def fat(n):
    # if n==1:
    # return 1
    # else:
    # return n*fat(n-1)
    # print(fat(5)) #即5*f(4) f(4)=4*f(3) f(3)=3*f(2) f(2)=2*f(1) f(1)=1


    #斐波那契数列fibo= 0,1,1,2,3,5,8,13,21,34,55......第n个数等于第n-1个数+第n-2个数
    #fibo(0)=0 这个可以自己设置的,即设置n<=1时fibo(0)=0;m<=2时,fibo(1)=0
    #解析,fibo(8)=fibo(7)+fibo(6)
    # def fibo(n):
    # if n<=1:
    # return n
    # else:
    # return fibo(n-1)+fibo(n-2)
    # print(fibo(3))

    #自己的想法
    # def fibo(n):
    # if n==0 or n==1: #刚刚自己写的是and
    # return n #而且这里刚刚自己写的是 return 0
    # else:
    # return fibo(n-1)+fibo(n-2)
    # print(fibo(8))

    #内置函数
    #filter(a,b) a是一个函数名字,b是一个序列
    # str=['a','b','c','d']
    # def fun(s):
    # if s != 'a':
    # return s
    # ret = filter(fun,str) #filter实现一个过滤器的作用
    # print(ret) #打印<filter object at 0x02EE5590>
    # print(list(ret)) #打印['b', 'c', 'd']

    #map(a.b) a是一个函数名字,b是一个序列
    # str=['a','b','c','d']
    # def fun(s):
    # return s + 'alcin'
    # ret = map(fun,str) #map实现一个添加元素的作用
    # print(ret) #打印<map object at 0x02985590>
    # print(list(ret)) #打印['aalcin', 'balcin', 'calcin', 'dalcin']

    #reduce(a,b) a是一个函数名字,b是一个序列,其结果就是一个值
    # from functools import reduce #要想使用reduce()这个函数,就必须加上这一句话
    #
    # def add(x,y):
    # return x+y
    # #range(1,10)表示1,2,3,4...9
    # print(reduce(add,range(1,10))) #打印45 1到9相加

    # lambda x,y:x*y #一句话实现两个数相乘,不用再定义函数,但是相当于一个函数


    from functools import reduce #要想使用reduce()这个函数,就必须加上这一句话
    b = reduce(lambda x,y:x*y , range(1,6)) #实现1到5相乘,即5的阶乘
    print(b)

    haijing in HZ
    miss min
    2018.9.23







  • 相关阅读:
    centos6下安装部署hadoop2.2
    centos 卸载自带的 java
    完全分布式Hadoop2.3安装与配置
    hadoop安装与WordCount例子
    CentOS 6.5 下载地址
    碎片化
    DRM加密技术是怎么一回事
    DRM你又赢了:其API纳入HTML5标准
    java 对视频和图片进行加密解密
    HadoopDB:混合分布式系统
  • 原文地址:https://www.cnblogs.com/YiYA-blog/p/9693972.html
Copyright © 2011-2022 走看看