Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.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/8/http/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 - Fatal编程技术网

如何在python中找到列表的中间值

如何在python中找到列表的中间值,python,Python,我试图找到一个列表的中间值。我试过两种方法,但都不起作用(我已经导入了我需要的东西,列表就在那里)自拍是列表的名称 def median(): return numpy.median(numpy.array(selfies)) 这就是错误所在 ret=umr_和(arr、轴、数据类型、out、keepdims) TypeError:无法使用灵活类型执行reduce 另一种方式是 def median(): med = statistics.median(selfies)

我试图找到一个列表的中间值。我试过两种方法,但都不起作用(我已经导入了我需要的东西,列表就在那里)自拍是列表的名称

def median():
    return numpy.median(numpy.array(selfies))
这就是错误所在

ret=umr_和(arr、轴、数据类型、out、keepdims)

TypeError:无法使用灵活类型执行reduce

另一种方式是

def median():
    med = statistics.median(selfies)
    return med
错误是

返回(数据[i-1]+数据[i])/2

TypeError:/:“str”和“int”的操作数类型不受支持

提前感谢

使用.sort()或.sorted()根据您的需要对列表进行排序, 然后检索列表[math.floor(len(list)/2)]

如果不需要排序,只需要中间值,请使用

list[math.floor(len(list)/2)].

你好,用户9123,

Medain()函数的主要用法
此模块提供用于计算数值(实值)数据的数理统计的函数

注意除非另有明确说明,否则这些函数支持int、float、decimal.decimal和fractions.Fraction。当前不支持其他类型(无论是否在数字塔中)的行为。混合类型也未定义且依赖于实现。如果输入数据由混合类型组成,则可以使用map()确保结果一致,例如map(float,input_data)

你的问题
当您对字符串使用此函数时,它有时无法正常工作,因此我建议您使用自定义函数。我在下面的代码中给出了解决方案

解释函数中值()
统计。中位数(数据)

使用常用的“中间两个平均值”方法返回数值数据的中间值(中间值)。如果数据为空,则会引发统计错误。数据可以是序列或迭代器

中位数是中心位置的可靠度量,受数据中异常值的影响较小。当数据点数为奇数时,返回中间数据点:

问题的解决
如果您将此函数用于数值,请尝试下面的代码

def getMedian(numericValues):
  theValues = sorted(numericValues)

  if len(theValues) % 2 == 1:
    return theValues[(len(theValues)+1)/2-1]
  else:
    lower = theValues[len(theValues)/2-1]
    upper = theValues[len(theValues)/2]
    return (float(lower + upper)) / 2 


print getMedian([0,1,2,3,4,5]) # output = 2.5
如果要对字符串使用中值函数,请尝试下面的代码

def medianFind(mystring):
    return mystring[(len(mystring)-1)/2]  #len returns the length of the string

print medianFind("vmr")  #prints m
我希望我的回答能有所帮助。

如果有任何查询,请发表评论。

可能重复的是
自拍
?您的输入中似乎有字符串。这就是我想确认的,在我看来是错误消息。要问一个好问题,您应该阅读:错误消息不是由中位数本身的计算,而是由数据类型决定的。你的答案没有回答OP。你好,eyllanesc先生,首先你展示我的答案,我用另一个答案给出解决方案。那么为什么要否决我的投票。你是专家,所以在不更新我的答案后给出第一个评论,所以给出否决票。如果问题像是找到浮点或整数(数字元素)列表的中值,你的答案是正确的,但事实并非如此,您可以咨询作者并询问信息。错误信息不是由中值本身的计算得出的,而是由数据类型得出的。你的答案与事实不符OP@eyllanesc但是使用.sort()之后,他可以使用自己的比较方法进行排序(这似乎比声明cmp或eq更容易,特别是如果对象是从外部库导入的),那么这难道不能解决他的问题吗?最终,我的印象是他在寻找中间值,他的问题在于numpy库和他使用的数据类型,但由于中间值并不太复杂,我只是建议他手动操作,因为使用我的方法可能会解决TypeError。如果列表是字符串,您的解决方案会回答这个问题吗?例如
l=['1','2','3','4']
@eyllanesc Yes确实是:l.sorted(l,key=lambda x:int(x)),然后获取中值(假设int()不抛出错误,所有字符串都可以转换为int)。您还可以使用其他比较“标准”,如ASCII或世界上任何您可以想到的标准,只要它允许有效的比较。它还可以处理其他数据类型。