在python3 中,filter跟map类似,结果得用list封装一下。如作业题中,代码修改如下:
import math
def is_sqr(x):
r = int(math.sqrt(x))
return r * r == x
print (list(filter(is_sqr, range(1, 101))))
import math
def is_sqr(x):
r = int(math.sqrt(x))
return r * r == x
print (list(filter(is_sqr, range(1, 101))))
2016-03-23
python3中,要使用reduce,得从functools中引入,加上:
from functools import reduce
才能够用。
from functools import reduce
才能够用。
2016-03-23
def cmp_ignore_case(s1, s2):
if s1[0].lower()<s2[0].lower():
return -1
if s1[0].lower()>s2[0].lower():
return 1
return 0
print sorted(['bob', 'about', 'Zoo', 'Credit'],cmp_ignore_case)
if s1[0].lower()<s2[0].lower():
return -1
if s1[0].lower()>s2[0].lower():
return 1
return 0
print sorted(['bob', 'about', 'Zoo', 'Credit'],cmp_ignore_case)
2016-03-23
已采纳回答 / flagcn
因为虽然返回的参数分别是1,2,3,但这几个函数并没有计算,等到计算的时候(print f1, f2, f3...)i已经变成了3了,算以算出来都是9.
2016-03-22
def calc_prod(lst):
def lazy_prod():
return reduce(lambda x,y: x*y, lst)
return lazy_prod
def lazy_prod():
return reduce(lambda x,y: x*y, lst)
return lazy_prod
2016-03-22
最新回答 / 追魂月如弓
明白了,参考https://segmentfault.com/a/1190000000322433 这是一个python3版本中的一个改动造成,map()函数结果必须传入list封装一下才行。所以改进为:def f(x): return x*xprint (list(map(f, [1, 2 , 3, 4, 5, 6, 7, 8, 9])))执行结果:[1, 4, 9, 16, 25, 36, 49, 64, 81]请按任意键继续. . .
2016-03-22
最赞回答 / 魔luck
父类的初始化函数会先执行 ,最后才是 自己的初始化函数super(D, self).__init__(a)这句话,即先调用了 B C 的初始化,而B C 的初始化 又调用的 A 的 ,A的初始化有print 'init A...' 所以先输出 init A。 接下来 D 调用B C初始化那到底是先调用B 或者 C 呢?看这个class D(B, C),右边的参数先传入,即先调用了C。你可以试下B、C换下顺序 就明白了
2016-03-21