-
发现没法把 lazy_sum 移到 calc_sum 的外部,因为它引用了 calc_sum 的参数 lst。
查看全部 -
如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。
查看全部 -
高阶函数reduce()
1.接收一个函数f,一个list
2.f必须接收2个参数,对list中每个元素反复调用函数f,并返回最终结果值。
3.reduce()还可以接收第3个可选参数,作为计算的初始值。
def f(x, y): return x + y
调用 reduce(f, [1, 3, 5, 7, 9])时
先计算头两个元素:f(1, 3),结果为4; 再把结果和第3个元素计算:f(4, 5),结果为9; 再把结果和第4个元素计算:f(9, 7),结果为16; 再把结果和第5个元素计算:f(16, 9),结果为25; 由于没有更多的元素了,计算结束,返回结果25。
查看全部 -
map函数:
def format_name(s):
return s[0].upper()+s[1:].lower()
print map(format_name, ['adam', 'LISA', 'barT'])
利用map()函数,可以把一个 list 转换为另一个 list,只需要传入转换函数。
map()函数可以处理任意类型的list
注意:
转大写upper()
转小写lower()
list每个字符串的首字母用s[0] 其余字母用s[1:]
查看全部 -
高阶函数:把函数作为参数
import math
def add(x, y, f):
return f(x) + f(y)
print add(25, 9, math.sqrt)
查看全部 -
哈哈哈哈啊哈哈
查看全部 -
再用第一个余数除小的一个数,得第二个余数;
又用第二个余数除第一个余数,得第三个余数;
这样逐次用后一个数去除前一个余数,直到余数是0为止。那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。
例如求1515和600的最大公约数,
第一次:用600除1515,商2余315;
第二次:用315除600,商1余285;
第三次:用285除315,商1余30;
第四次:用30除285,商9余15;
第五次:用15除30,商2余0。
1515和600的最大公约数是15。查看全部 -
sorted 函数中,要比较的数据应该放在前面,比较函数放在后面!!!!!!!!!!!
reduce函数中 比较函数放前面,数据表放后面
filter函数跟reduce函数一样
查看全部 -
7月7日,有个兄弟也是解答别人问题时发的图。可以帮到你。之所以写成 a ,b =b, a + b.是因为本题的要求是求一个斐波那契额数列,也就是从第三个数开始,后一个数是前两个数的和。举例
正确理解
a = 2
b = 3
a , b = b , a + b
>a = 3
>b = 5
你可以发现,a和b的两个值是同时更新的。本题中一个斐波那契数列是[0, 1, 1, 2, 3, 5, 8, 13, 21, 34],你也可以发现,开始时定义的a = 2 ,b = 3,求 出更新后的a = 3,b = 5,正好数列每次向后移了一个位置。
错误理解
a = 2
b = 3
a = b
b = a + b
> a
3
>b
6
你可以看到,这样并不是同步的更新a和b,计算b的时候,利用的是已经更新过的a
综上,a , b = b, a + b 不可以写成a = b
b = a+ b
查看全部 -
def
__str__(
self
):
return
str
(
self
.fibo)
不使用 __str__ ,print打印出来是个对象;使用了就把对象变成字符串
查看全部 -
self.numbers这个在__init__中赋值的,所以是这一类的实例的属性,你把numbers放到__init__的参数位子,你在实例化对象是就必须给它这么一个L,否则报错的。
这个属性就是妃不纳妾数列,题目要求__init__只有一个参数 ‘10’,意思是传一个参数'10',生成10位的妃不纳妾数列,你如果加这个参数与题目不符,你还需要直接传一个妃不纳妾数列进去。
查看全部 -
def __str__(self):
return str(self.numbers)
为什么要把列表转化成字符串(因为self.numebers是个数组)
因为__str__方法需要返回字符串,没有这个转化输出的“函数f”就是一串地址
查看全部 -
kw字典的赋值age=18, course='Python' for k, v in kw.iteritems(): setattr(self, k, v)
不能是self.k=k
查看全部 -
Python内置的 sorted()函数可对list进行排序:
>>>sorted([36, 5, 12, 9, 21])
[5, 9, 12, 21, 36]但 sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。
因此,如果我们要实现倒序排序,只需要编写一个reversed_cmp函数:
def reversed_cmp(x, y): if x > y: return -1 if x < y: return 1 return 0
这样,调用 sorted() 并传入 reversed_cmp 就可以实现倒序排序:
>>> sorted([36, 5, 12, 9, 21], reversed_cmp) [36, 21, 12, 9, 5]
sorted()也可以对字符串进行排序,字符串默认按照ASCII大小来比较:
>>> sorted(['bob', 'about', 'Zoo', 'Credit']) ['Credit', 'Zoo', 'about', 'bob']
'Zoo'排在'about'之前是因为'Z'的ASCII码比'a'小。
查看全部 -
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'
查看全部
举报