在第二个函数中调用布尔函数python
我目前在这里有一个工作功能:在第二个函数中调用布尔函数python,python,function,boolean,Python,Function,Boolean,我目前在这里有一个工作功能: def median(alist): copylist = alist[:] copylist.sort() if len(copylist)%2 == 0: rightmid = len(copylist)//2 leftmid = rightmid - 1 median = (copylist[leftmid] + copylist[rightmid])//2 else: mid
def median(alist):
copylist = alist[:]
copylist.sort()
if len(copylist)%2 == 0:
rightmid = len(copylist)//2
leftmid = rightmid - 1
median = (copylist[leftmid] + copylist[rightmid])//2
else:
mid = len(copylist)//2
median = copylist[mid]
return median
我希望这个函数调用第二个函数,即使在第一个函数中。这是第二个功能:
def isEven(n):
if n % 2 == 0:
return True
else:
return False
这是正确的方法,还是有其他方法可以缩短中值函数中的代码
def median(alist):
copylist = alist[:]
copylist.sort()
if isEven(len(alist)) == True:
rightmid = len(copylist)//2
leftmid = rightmid - 1
median = (copylist[leftmid] + copylist[rightmid])//2
else:
mid = len(copylist)//2
median = copylist[mid]
return median
即使不需要辅助方法
isEven
:
def median(alist):
copylist = sorted(alist)
index = (len(alist) - 1) // 2
if len(alist) % 2:
return copylist[index]
else:
return (copylist[index] + copylist[index + 1]) / 2.0
# Testing
print(median([3,1,2])) #2
print(median([4,2,3,1])) #2.5
试试看您的问题已经得到了回答,但如果您感兴趣,我会添加以下可读性增强功能: 我会将您的
isEven
函数更改为具有以下签名:
def hasEvenNumberOfMembers(list):
if len(list) % 2 == 0:
return True
else:
return False
然后将median
中的if
语句更改为:
如果拥有EvenNumberOfMembers(列表):
我认为这会让事情更具可读性。就我的2c