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