-
filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。查看全部
-
reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。查看全部
-
3.0的Python中reduce放置于functools里 引入from functools import reduce查看全部
-
函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。查看全部
-
函数式编程
查看全部 -
# 函数本身可以被调用
def func():
pass
print(callable(func)) # True
# 类本身可以被调用,主要用作生成实例化对象
class class_test():
def __init__(self):
pass
print(callable(class_test)) # True
# 类的实例化对象无法被调用
class class_test():
def __init__(self):
pass
a = class_test()
print(callable(a)) # False
# 通过增加__callable__()函数,将类实例化对象变为可调用
class class_test():
def __init__(self):
pass
def __call__(self):
pass
a = class_test()
print(callable(a))
查看全部 -
使用@property
https://www.liaoxuefeng.com/wiki/897692888725344/923030547069856
@property装饰器详解
http://c.biancheng.net/view/4561.html
# 通过 @property 装饰器,可以直接通过方法名来访问方法,不需要在方法名后添加一对“()”小括号,语法格式如下:
# @property
# def 方法名(self)
# 代码块
# 而要想实现修改 方法名的属性值,还需要为其属性添加 setter 方法,就需要用到 setter 装饰器,它的语法格式如下
# @方法名.setter
# def 方法名(self, value):
# 代码块
查看全部 -
这里,如果
return self.p / self.q
会显示错误
raceback (most recent call last):
File "index.py", line 16, in
print float(Rational(7, 2))
TypeError: __float__ returned non-float (type int)但是python3里正常。
查看全部 -
欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。
是由古希腊数学家欧几里德在其著作《The Elements》中最早描述了这种算法,所以被命名为欧几里德算法
查看全部 -
TypeError:unsupported operand type(s) for /: 'Rational' and 'Rational'
解决方法: Python 3.x 中没有定义__div__(),而是有__truediv__() 来替代
查看全部 -
python中filter()函数
filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
例如,要从一个list [1, 4, 6, 7, 9, 12, 17]中删除偶数,保留奇数,首先,要编写一个判断奇数的函数:
def is_odd(x): return x % 2 == 1
然后,利用filter()过滤掉偶数:
filter(is_odd, [1, 4, 6, 7, 9, 12, 17])
结果:[1, 7, 9, 17]
利用filter(),可以完成很多有用的功能,例如,删除 None 或者空字符串:
def is_not_empty(s): return s and len(s.strip()) > 0 filter(is_not_empty, ['test', None, '', 'str', ' ', 'END'])
结果:['test', 'str', 'END']
注意: s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。
当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' '),如下:
a = ' 123' a.strip()
结果: '123'
a='\t\t123\r\n' a.strip()
结果:'123'
查看全部 -
这种行为称为多态。也就是说,方法调用将作用在 x 的实际类型上。s 是Student类型,它实际上拥有自己的 whoAmI()方法以及从 Person继承的 whoAmI方法,但调用 s.whoAmI()总是先查找它自身的定义,如果没有定义,则顺着继承链向上查找,直到在某个父类中找到为止。
查看全部 -
定义Student类时,只需要把额外的属性加上,例如score:
class Student(Person): def __init__(self, name, gender, score): super(Student, self).__init__(name, gender) self.score = score
一定要用 super(Student, self).__init__(name, gender) 去初始化父类,否则,继承自 Person 的 Student 将没有 name 和 gender。
函数super(Student, self)将返回当前类继承的父类,即 Person ,然后调用__init__()方法,注意self参数已在super()中传入,在__init__()中将隐式传递,不需要写出(也不能写)。
查看全部 -
直接把 lambda 函数赋值给 self.get_grade 和绑定方法有所不同,函数调用不需要传入 self,但是方法调用需要传入 self
查看全部 -
#求前20项的斐波那契数
a = 0
b = 1
for _ in range(20):
(a, b) = (b, a + b)
print(a, end=' ')# 其中 '_' 是一个循环标志,也可以用i,j 等其他字母代替,下面的循环中不会用到,起到的是循环此数的作用
查看全部
举报