当前位置: 首页 > 知识库问答 >
问题:

在Python中查找列表的中值

齐晟
2023-03-14

如何在Python中找到列表的中值?列表可以是任何大小,并且不能保证数字按任何特定顺序排列。

如果列表包含偶数个元素,则函数应返回中间两个元素的平均值。

以下是一些示例(出于显示目的进行了分类):

median([1]) == 1
median([1, 1]) == 1
median([1, 1, 2, 4]) == 1.5
median([0, 2, 5, 6, 8, 9, 9]) == 6
median([0, 0, 0, 0, 4, 4, 6, 8]) == 2

共有3个答案

汤枫
2023-03-14

sorted()函数对此非常有用。使用排序函数对列表进行排序,然后简单地返回中间值(如果列表包含偶数元素,则将两个中间值求平均值)。

def median(lst):
    sortedLst = sorted(lst)
    lstLen = len(lst)
    index = (lstLen - 1) // 2
   
    if (lstLen % 2):
        return sortedLst[index]
    else:
        return (sortedLst[index] + sortedLst[index + 1])/2.0
步兴为
2023-03-14

(适用于python-2. x):

def median(lst):
    n = len(lst)
    s = sorted(lst)
    return (s[n//2-1]/2.0+s[n//2]/2.0, s[n//2])[n % 2] if n else None
>>> median([-5, -5, -3, -4, 0, -1])
-3.5

numpy.median()

>>> from numpy import median
>>> median([1, -4, -1, -1, 1, -3])
-1.0

对于python-3. x,使用statistics.median

>>> from statistics import median
>>> median([5, 2, 3, 8, 9, -2])
4.0
汪翰墨
2023-03-14

Python 3.4具有< code>statistics.median:

返回数值数据的中位数(中间值)。

当数据点数量为奇数时,返回中间数据点。当数据点数量为偶数时,通过取两个中间值的平均值来插值中值:

>>> median([1, 3, 5])
3
>>> median([1, 3, 5, 7])
4.0

用法:

import statistics

items = [6, 1, 8, 2, 3]

statistics.median(items)
#>>> 3

它对类型也非常小心:

statistics.median(map(float, items))
#>>> 3.0

from decimal import Decimal
statistics.median(map(Decimal, items))
#>>> Decimal('3')
 类似资料:
  • 问题内容: 关于你的第一个问题:该代码非常好,并且如果与其中的一个元素相等就可以正常工作。也许你尝试查找与其中一项不完全匹配的字符串,或者你使用的浮点值会导致不准确。 关于第二个问题:如果“查找”列表中的内容,实际上有几种可能的方法。 检查里面是否有东西 这是你描述的用例:检查列表中是否包含某些内容。如你所知,你可以使用in运算符: 过滤集合 即,找到满足特定条件的序列中的所有元素。你可以为此使用

  • 问题内容: 我很新,我希望它不太明显,但是我似乎无法为以下问题找到一个简短而准确的答案。 我有两个清单: 我想查找第二个列表()的所有索引何时在第一个列表()中,以便得到如下内容: b在a中的索引:或 问题答案: 具有列表理解: 或使用for循环:

  • 我正在使用MongoDB搜索包含列表列表的元素,其中列表中至少有一个项目与搜索参数匹配。 这是我目前拥有的结构的一个例子。 我想搜索数据列表中值为“绿色”的所有项目。 我目前有这个: 但是,不会返回任何结果。

  • 问题内容: 背景: 示例列表: 我想检索一个子串是否匹配的元素,例如 码: 如果列表中的任何元素包含模式,则上面的命令会打印出来。 我想打印与子字符串匹配的元素。因此,如果我要检查,我只想从列表中打印。 问题答案: print [s for s in list if sub in s] 如果要用换行符分隔它们: 完整示例,不区分大小写:

  • 本文向大家介绍在Python中的每个子列表中查找最大值,包括了在Python中的每个子列表中查找最大值的使用技巧和注意事项,需要的朋友参考一下 我们得到一个列表列表。在内部列表或子列表中,我们需要在每个列表中找到最大值。 与最大和 我们设计一个带in条件的for循环,并应用max函数来获取每个子列表中的最大值。 示例 输出结果 运行上面的代码给我们以下结果- 带映射和最大 在遍历子列表时,我们继续

  • 如何找到python列表的中间位置? 这只是一个函数的例子,它可以找到任何列表的中间,你可以用列表理解来做这件事吗? 编辑:这与去掉中间点不同,因为我只想打印出中间值,如果列表是奇数,我想返回两个中间值,就像接受的答案一样。没有像另一个问题那样得到中值,而是得到两个值的平均值。