python中间是什么意思_中间代码说明

为什么这是非常错误的,逐行:def median(list): # 1

list.sort() # 2

if len(list)%2 == 0:

#have to take avg of middle two

i = len(list)/2 # 3

median = avg() # 4

else:

#find the middle (remembering that lists start at 0)

i = len(list)/2 # 5

median = list # 6

return median

#1:给变量指定与数据类型相同的名称,即list是个坏主意。

#2:list.sort()将修改正在传递的列表。人们会期望像median()这样的getter不会这样做。

#4它调用一个没有参数的函数avg(),这是完全没有意义的,即使定义了这样一个函数。

无论采用何种分支,都以相同的方式计算#3和#5。无论如何,i从未使用过。

#6它将median设置为原始的list,这是没有意义的。

以下是我将如何重写(同时保持清晰性):def median(alist):

srtd = sorted(alist) # returns a sorted copy

mid = len(alist)/2 # remember that integer division truncates

if len(alist) % 2 == 0: # take the avg of middle two

return (srtd[mid-1] + srtd[mid]) / 2.0

else:

return srtd[mid]

此外,avg_list()函数(在median()中既不使用也不能使用)可以重写为:def avg_list(numbers):

return float(sum(numbers))/len(numbers)

^{}是返回iterable中所有元素之和的函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值