Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—列表的中值_Python_List_Median - Fatal编程技术网

Python—列表的中值

Python—列表的中值,python,list,median,Python,List,Median,这是我的代码,我需要找到列表(x)的中值,但我得到了以下错误: def median(x): if range(1, len(x))%2!=0: sorted(x) listlength = range(1, len(x)+1) num = listlength / 2 middlenum = x[num] else: sorted(x) listlength = range(1,

这是我的代码,我需要找到列表(x)的中值,但我得到了以下错误:

def median(x):

    if range(1, len(x))%2!=0:
        sorted(x)
        listlength = range(1, len(x)+1)
        num = listlength / 2
        middlenum = x[num]
    else:
        sorted(x)
        listlength = range(1, len(x)) 
        num = listlength / 2
        num2 = num + 1
        middlenum = x[num2 + num / 2]
    return middlenum
我真的不知道该怎么办,请帮忙。

范围(1,len(x))
是一个iterable。在这种情况下,它不能除以一个数字,
2

我相信你只是想用
如果len(x)%2:

另外,
sorted(x)
将返回
x
sorted,而不是sorted。对于该任务,您有
x.sort()


如果只想找到中间带,请使用内置的:


否则,请参阅答案。

您还可以使用NumPy的内置功能,这可能会更快

>>> import statistics
>>> statistics.median([1, 2, 3])
2
NumPy拥有一整套基于阵列的数据分析功能,如平均值、模式、范围、标准偏差等:



希望这有帮助

在这个程序中,首先用户将获取五个值。然后对这些值进行排序并给出中值。它还将打印与中值相比的较大值和较小值。因此,这是获取中值的代码

import numpy as np
def median(x):
    return np.median(np.array(x))
如果用户希望获取多个值,则代码为:

a = [int(x) for x in input().split()]
p,q,r,s,t=a
w=a.sort()
median=a[2]
l=a[3],a[4]
m=a[0],a[1]
print("Median is : %i" %median)
print("The larger values are: %i %i" %l)
print("The smaller values are: %i %i" %m)

def中值(x):如果透镜(x)%2=0:x.sort()listlength=len(x)+1 num=listlength/2 middlenum=x[num]其他:x.sort()listlength=len(x)num=listlength/2 num+1 middlenum=x[num2+num/2]返回middlenum错误:“哦,再试一次。中位数([1])导致错误:列表索引超出范围“。。。。。。我做错了什么,该死的,我刚刚意识到这段代码非常难读,就像这个注释一样,在
的两个分支中,if
将是另一个iterable(或python 2.x中的列表),并且不能再除以2。最后,偶数情况下的计算应该是
middlenum=(x[num]+x[num+1])/2
-当前的计算结果将大致计算上四分位数!
a = [int(x) for x in input().split()]
p,q,r,s,t=a
w=a.sort()
median=a[2]
l=a[3],a[4]
m=a[0],a[1]
print("Median is : %i" %median)
print("The larger values are: %i %i" %l)
print("The smaller values are: %i %i" %m)
import statistics
a = [int(x) for x in input().split()]
w=a.sort()
median=statistics.median(a)
print("Median is : %.2lf" %median)