import math
def is_sqr(x):
return math.sqrt(x) in range(1,11)
print filter(is_sqr, range(1, 101))
def is_sqr(x):
return math.sqrt(x) in range(1,11)
print filter(is_sqr, range(1, 101))
2017-11-08
class Fib(object):
def __call__(self,num):
a,b,L=0,1,[]
for n in range(num):
L.append(a)
a,b=b,a+b
return L
f = Fib()
print f(10)
print f(20)
def __call__(self,num):
a,b,L=0,1,[]
for n in range(num):
L.append(a)
a,b=b,a+b
return L
f = Fib()
print f(10)
print f(20)
2017-11-08
https://www.zhihu.com/question/26930016大家可以去知乎先看看高票回答,可以很好的理解装饰器的作用
装饰器的顺序:
@a
@b
@c
def f():
等效于:
f=a(b(c(f)))
装饰器的顺序:
@a
@b
@c
def f():
等效于:
f=a(b(c(f)))
2017-11-07
def calc_prod(lst):
def aa():
sum=1
for i in lst:
sum*=i
return sum
return aa
f = calc_prod([1, 2, 3, 4])
print f()
def aa():
sum=1
for i in lst:
sum*=i
return sum
return aa
f = calc_prod([1, 2, 3, 4])
print f()
2017-11-07
def count():
fs = []
for i in range(1, 4):
def f(x=i):
return x**2
fs.append(f)
return fs
f1, f2, f3 = count()
print f1(), f2(), f3()
这样就可以了,只需要让被保存在list列表里面的的函数每一次都调取不一样的参数就行了,如果不附加参数,会因为在最后执行list列表内的函数时,已经迭代完成,函数f()在获取i的时候,i始终是=3,而传入一个参数之后,则在指定函数对象时获取不同值
fs = []
for i in range(1, 4):
def f(x=i):
return x**2
fs.append(f)
return fs
f1, f2, f3 = count()
print f1(), f2(), f3()
这样就可以了,只需要让被保存在list列表里面的的函数每一次都调取不一样的参数就行了,如果不附加参数,会因为在最后执行list列表内的函数时,已经迭代完成,函数f()在获取i的时候,i始终是=3,而传入一个参数之后,则在指定函数对象时获取不同值
2017-11-07
既然是要实现忽略大小写排序的算法,那么就只需要比较第一个字符串就可以了
def cmp_ignore_case(s1, s2):
if s1.title() > s2.title():
return 1
if s1.title < s2.title():
return -1
return 0
print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
def cmp_ignore_case(s1, s2):
if s1.title() > s2.title():
return 1
if s1.title < s2.title():
return -1
return 0
print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
2017-11-06
回答这个问题得想作者要怎样验证,这个问题原封不动的提交结果也是对的,所以作者只能给定一个标准答案,但作者也不知道你要用什么参数名。。可能是s,可能是x,也可能是其他
2017-11-06
def cmp_ignore_case(s1, s2):
if s1.lower()>s2.lower():
return 1
if s1.lower()<s2.lower():
return -1
return 0
print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
if s1.lower()>s2.lower():
return 1
if s1.lower()<s2.lower():
return -1
return 0
print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
2017-11-06
def mydecorator(f):
@functools.wraps(f)
def wrapper(*args,**kws):
t1=time.time()
a = f(*args,**kws)
t2 = time.time
print'call %s() in %f%s' % (f.__name__,(t2-t1)*1000,unit)
return a
return wrapper
@functools.wraps(f)
def wrapper(*args,**kws):
t1=time.time()
a = f(*args,**kws)
t2 = time.time
print'call %s() in %f%s' % (f.__name__,(t2-t1)*1000,unit)
return a
return wrapper
2017-11-06
def __cmp__(self, s):
if self.score > s.score:
return -1
elif self.score<s.score:
return 1
else:
return -1 if self.name<=s.name else -1
if self.score > s.score:
return -1
elif self.score<s.score:
return 1
else:
return -1 if self.name<=s.name else -1
2017-11-06
# -*-coding:utf-8-*-
import math
def is_sqr(x):
return math.sqrt(x).is_integer()
print filter(is_sqr, range(1, 101))
import math
def is_sqr(x):
return math.sqrt(x).is_integer()
print filter(is_sqr, range(1, 101))
2017-11-05