2017-02-21 99 views
0

我现在这里有一个工作功能:在第二个函数中调用布尔函数? - Python的

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 

,我想这个函数来调用第二功能ISEVEN第一功能。这是第二个功能:

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 

回答

0

尝试这样的事情应该缩短位数代码的数量相当多,甚至无需辅助方法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 

试试吧here!

0

你的问题已经已被回答,但如果您有兴趣,我会添加以下可读性增强功能:

我会cha NGE您isEven功能,具有以下特征:

def hasEvenNumberOfMembers(list): 
    if len(list) % 2 == 0: 
     return True 
    else: 
     return False 

,然后更改if声明median阅读:

if hasEvenNumberOfMembers(alist):

我认为这使事情很多更具可读性。只是我的2c。

相关问题