已采纳回答 / 布鲁斯先生
注意一下你的Python的版本,filter在Python2.7和Python3.x中有所区别:Pyhton2.7 返回列表,Python3.x 返回迭代器对象,有惰性运算的特性,节省了内存。
2018-10-01
def __str__(self):
#p,q=float.as_integer_ratio(self.p/self.q)
#return '{}/{}'.format(p,q)
from fractions import Fraction
#字面意思,numerator获取分子,denominator获取分母
r=Fraction(self.p,self.q)
return '{}/{}'.format(r.numerator,r.denominator)
#p,q=float.as_integer_ratio(self.p/self.q)
#return '{}/{}'.format(p,q)
from fractions import Fraction
#字面意思,numerator获取分子,denominator获取分母
r=Fraction(self.p,self.q)
return '{}/{}'.format(r.numerator,r.denominator)
2018-09-29
def __str__(self):
p,q=float.as_integer_ratio(self.p/self.q)
#float.as_integer_ratio(6/8) #Out[24]: (3, 4)
return '{}/{}'.format(p,q)
p,q=float.as_integer_ratio(self.p/self.q)
#float.as_integer_ratio(6/8) #Out[24]: (3, 4)
return '{}/{}'.format(p,q)
2018-09-29
def __str__(self):
s=[]
a,b=0,1
for i in range(self.num):
a,b=a+b,a
s.append(b)
return str(s)
s=[]
a,b=0,1
for i in range(self.num):
a,b=a+b,a
s.append(b)
return str(s)
2018-09-29
def __cmp__(self, s):
if self.score==s.score:
return -1 if self.name<s.name else 1
return 1 if self.score<s.score else -1
if self.score==s.score:
return -1 if self.name<s.name else 1
return 1 if self.score<s.score else -1
2018-09-29
def calc_prod(lst):
def lazy_prod():
return reduce(lambda x,y:x*y,lst)
return lazy_prod
f = calc_prod([1, 2, 3, 4])
print f()
def lazy_prod():
return reduce(lambda x,y:x*y,lst)
return lazy_prod
f = calc_prod([1, 2, 3, 4])
print f()
2018-09-29
最赞回答 / Awful_Leo
楼主可以把这种写法当成python的语法规范,比如为什么定义一个函数要用def,一样的道理。property是“属性”的意思,@property就是把实例方法当做属性调用的语法。set是“设置”的意思,setter就是“设置器”。@score.setter就是给这个类下的score属性重新设定值的时候,调用这个方法。按实际的用法,如果一个语句是s.score,就是要获取属性,所以python会直接找@property这个装饰器下面有没有score这个方法,有就直接调用了。如果另一个语句是s.score =...
2018-09-29