首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >寻找列表的“中心平均值”

寻找列表的“中心平均值”
EN

Stack Overflow用户
提问于 2015-12-09 16:41:58
回答 13查看 12.9K关注 0票数 2

“返回整数列表的”居中“平均值,我们将说这是值的平均值,但忽略列表中的最大值和最小值。如果最小值有多个副本,忽略一个副本,对于最大值也一样。使用整数除法生成最终平均值。您可以假设列表长度为3或更长。”

这是我在家庭作业中遇到的一个问题,我很困惑如何找到最大/最小的数字,并将它们从清单中删除。这是我到目前为止所拥有的。它适用于我必须通过的10/14方案。我认为这仅仅是因为它抓住了中位

代码语言:javascript
运行
复制
def centered_average(nums):
x = 0
for i in range(len(nums)):
    x = i + 0
y = x + 1
if y%2 == 0:
    return (nums[y/2] + nums[(y/2)+1]) / 2
else:
    return nums[y/2]
EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2015-12-09 16:51:08

排序数组肯定是比较简单的代码,这里有一个手动循环的替代方案

代码语言:javascript
运行
复制
    max_value = nums[0]
    min_value = nums[0]
    sum = 0
    for x in nums:
        max_value = max(max_value, x)
        min_value = min(min_value, x)
        sum += x

    return (sum - max_value - min_value) / (len(nums) - 2)

这只会添加所有的内容,并移除末尾的最大值和最小值。

票数 7
EN

Stack Overflow用户

发布于 2015-12-09 16:44:48

如果列表不是太长,那么在计算上对列表进行排序应该不会太昂贵:

代码语言:javascript
运行
复制
sorted(nums)

然后,您可以创建一个没有第一个和最后一个条目的新列表,这将是最小和最大的值:

代码语言:javascript
运行
复制
new_nums = sorted(nums)[1:-1] # from index 1 to the next-to-last entry
票数 1
EN

Stack Overflow用户

发布于 2015-12-09 16:58:23

在我开始之前,我知道在其他答案中提到了使用函数排序的更简单的方法,是的,这是真的,但我相信您的老师一定已经让您能够掌握循环并逻辑地使用它们。

首先选择你的第一个号码,并分配它的高低,不要担心,这将是有意义的之后。

以def为中心的平均值(Nums):

代码语言:javascript
运行
复制
high = nums[0]
small = nums[0]

如果发生了神奇的事情,循环遍历列表,如果循环中的on大于前面的数,那么您可以用它替换变量high,让我演示一下。

代码语言:javascript
运行
复制
for count in nums:
    if count > high:
        high = count
    if count < low:
        low = count

现在,您有了低值和高值,您所做的就是将循环的值相加,减去高值和低值(正如您所说的,您不需要它们),.Then将这个答案除以一系列名词。

代码语言:javascript
运行
复制
for count in nums:
    sum = count + sum
sum = sum - (high + low)
return sum
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34184200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档