在第二个函数中调用布尔函数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