-
reduce()函数 reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。 例如,编写一个f函数,接收x和y,返回x和y的和: def f(x, y): return x + y 调用 reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做如下计算: 先计算头两个元素:f(1, 3),结果为4; 再把结果和第3个元素计算:f(4, 5),结果为9; 再把结果和第4个元素计算:f(9, 7),结果为16; 再把结果和第5个元素计算:f(16, 9),结果为25; 由于没有更多的元素了,计算结束,返回结果25。 上述计算实际上是对 list 的所有元素求和。虽然Python内置了求和函数sum(),但是,利用reduce()求和也很简单。 reduce()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为100,计算: reduce(f, [1, 3, 5, 7, 9], 100) 结果将变为125,因为第一轮计算是: 计算初始值和第一个元素:f(100, 1),结果为101。查看全部
-
声明:s为字符串,rm为要删除的字符序列 s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符 s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符 s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符 注意: 当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' ') 去掉 文本中句子开头与结尾的符号的。因为在文本中每行开头都有个"/n",代表换行。(印象中是这样的) 一般是 for line in file: line.strip().split() 这样就把每行的每个字符一个个分开,变成一个list。查看全部
-
在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 functools 模块里,如果想要使用它,则需要通过引入 functools 模块来调用 reduce() 函数:
from functools import reduce
查看全部 -
# 基础知识回顾
1. Python 发源、历史
2. 安装 Python 环境
3. 变量和数据类型:Python 内置的基本类型(整数、浮点数、字符串、布尔值、空值)
4. List 和 Tuple:顺序的集合类型
5. 条件判断和循环:控制程序流程
6. Dict 和 Set:根据 key 访问的集合类型
7. 函数:定义和调用函数
8. 切片:如何对 list 进行切片
9. 迭代:如何用 for 循环迭代集合类型
10. 列表生成式:如何快速生成列表
# 将要学习的内容
1. 函数式编程
2. 模块
3. 面向对象编程:面向对象的概念、属性、方法、继承、多态等
4. 定制类:利用 Python 的特殊方法定制类
# 学习目标
1. 掌握函数式编程
2. 掌握面向对象编程
3. 能够编写模块化的程序
查看全部 -
装饰器”(Decorator): decorator可以接受一个函数作为参数,并返回一个新函数 def f1(x): #定义一个函数f1 return x*2 def new_fn(g): #这就是装饰器函数 def fn(x): print ('call %s()' %g.__name__) #g.__name__:代码作用提取函数名称 return g(x) return fn 装饰器函数的调用: g1 = new_fn(f1) #用装饰器函数对函数f1装饰,并将return 的新函数赋予g1 print g1(5) #调用函数g1,并计算5. 方法二 f1 = new_fn(f1) #将return 的新函数赋予f1,此时f1的原始定义被彻底隐藏。 print f1(5) 结果: call f1() 25 关于装饰器的调用:Python的@语法,把decorator置于函数的定义处: @new_fn def f1(x): retunr x*2 把@new_fn放到f1()函数的定义处,相当于执行了语句: f1 = new_fn(f1) 等同于上面所述的方法二查看全部
-
fuck查看全部
-
@property---这是关键字,固定格式,能让方法当“属性”用。 @score.setter---前面的"score"是@property紧跟的下面定义的那个方法的名字,"setter"是关键字,这种“@+方法名字+点+setter”是个固定格式与@property搭配使用。查看全部
-
这一节花了很长时间,搞清楚几个函数执行上的容易忽略的地方。 先上自己的代码: import time def performance(unit): def f(k): def g(*args,**kw): t1=time.time() k(*args,**kw) t2=time.time() if unit=='ms': t=(t2-t1)*1000 else: t=(t2-t1) print 'call %s() in %f %s'%(k.__name__,t,unit) return k(*args,**kw) return g return f @performance('ms') def factorial(n): return reduce(lambda x,y: x*y, range(1, n+1)) print factorial(10) 1.@performance('ms') def factorial(n):............这两个语句,实际上就是: q=performance('ms') #把f的定义赋给q,并且f内的unit被初始化为‘ms' factorial=q(factorial) #调用q函数(也即半初始化的f函数),即执行f函数里面的语句,并且g内的k被初始化为factorial函数然后把g的定义赋给factorial。 注意深刻理解注释,重点是理解装饰器内的函数如果没有调用,就不会执行,而执行外层函数的时候,内层函数是不会执行的,可以理解为外部函数的算法是定义一个函数(只是定义,只是定义,只是定义,重要的事情说三遍),然后就return了。 !就!是!说!当执行一个函数时,遇到一个内部函数定义,只是做一个定义,而不会执行这个内部函数,任何函数的执行都是需要调用语句的! 但是!如果这个内部函数用到外部函数的参数时,执行外部函数就可以理解为定义内部函数并将其中用到的外部函数引入的参数设定为引入时的值。查看全部
-
函数式: functional 一种编程范式。 函数式编程的特点: 1.把计算视为函数而非指令 2.春函数式编程:不需要变量,没有变量,测试简单 3.支持高阶函数,代码简洁 Python支持的函数式编程: 1.不是纯函数式编程:允许有变量 2.支持高阶函数:函数也可以作为变量传入 3.支持闭包:有了闭包 就能返回函数 4.有限度的支持匿名函数查看全部
-
多重继承的目的是从两种继承树中分别选择并继承出子类,以便组合功能使用。 举个例子,Python的网络服务器有TCPServer、UDPServer、UnixStreamServer、UnixDatagramServer,而服务器运行模式有 多进程ForkingMixin 和 多线程ThreadingMixin两种。 要创建多进程模式的 TCPServer: class MyTCPServer(TCPServer, ForkingMixin) pass 要创建多线程模式的 UDPServer: class MyUDPServer(UDPServer, ThreadingMixin): pass 如果没有多重继承,要实现上述所有可能的组合需要 4x2=8 个子类。查看全部
-
map()----返回一个List列表,接收单个参数map(f(*),List)
reduce()---返回一个List列表,接收两个参数reduce(f(*,*),List)
filter()---返回一个筛选之后List,接收单个参数filter(f(*),List)
sorted()---自然排序返回List列表,可以接收多个参数,sorted(List,cmp,key)
查看全部 -
太难了;
真的太难了;
一点儿也不简单!
查看全部 -
#能被1整除的数就是整数查看全部
-
pass作用 1、空语句 2、保证格式完整 3、保证语义完整查看全部
-
实例方法和类方法最主要的区别在于,定义类方法主要是要加一个装饰器,@classmethod 而实例方法没有这个装饰器 在调用上的区别在于,实例方法要先实例化一个对象再调用这个实例化方法,而类方法不需要有类的实例,直接类名.方法名就可以调用。 实例方法至少有一个参数,通常用self,这个参数里面是这个实例本身。类方法至少有一个参数,通常用cls,这个参数里面是这个类本身。 实例方法由于有实例,所以实例的属性对其实可见的,但类方法显然没有属性。 本质上来讲,类方法和实例方法没有本质区别,只不过在调用的时候,实例方法把这个实例本身当做参数传过去了。 class myclass: @classmethod def classMethod(cls): print('class method') print('parameter : %s'%cls) pass def instanceMethod(self): print('instance method') print('parameter : %s' % self) pass m=myclass() m.instanceMethod()#实例来调用实例方法 myclass.classMethod()#类名.方法名调用类方法 myclass.instanceMethod(m)#类名.方法名,并将实例作为参数传入,和实例调用实例方法一样查看全部
举报