一种计算列表平均值并返回大于整个列表数学平均值的元素的函数

2024-04-25 08:32:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着做一个函数,计算给定列表的平均值,然后返回该列表中所有大于该列表数学平均值的元素。例子: 如果给定的列表为[1,2,3,4,5,6],则平均值为3.5。所以函数应该打印出数字(4,5,6)。你知道吗

我已经把列表中所有的数字都加起来了,但是不管我怎么做,我都不知道如何得到平均值,或者让它打印出大于数学平均值的数字。你知道吗

到目前为止,我已经添加了任何给定列表的所有元素:

def accum2(seq):


  total = 0

  for x in seq:
    total += x



  return total


print (accum2([1,2,3,4,5,6]))

打印的预期结果(accum2([1,2,3,4,5,6])应该是(4,5,6),但到目前为止,我得到的答案只是将给定列表中的所有数字相加。你知道吗

如有任何帮助,我们将不胜感激。你知道吗


Tags: 函数in元素列表forreturndef数字
3条回答

这里有一些简单的代码,应该工作。 我补充了一些意见。你知道吗

    originallist = [1,2,3,4,5,6] #This is your original list
    outputlist = [] #This is the list which you can add correct values to

    x = sum(originallist) / len(originallist) #This effectively finds you the average

    for item in originallist: #Checks which items are greater than average
        if item > x:
            outputlist.append(item) #If greater, add to the final list


    print(outputlist)

获取数值列表平均值的最简单方法是使用以下方法:

average = sum(seq) / len(seq)

从这里开始,只需使用一个条件语句(如果列表未排序,则可能必须首先对其排序)。在那里,您应该能够使用内置的list方法构建一个新的列表。你知道吗

有许多正确的方法可以做到这一点,下面显示了其中一种方法(Python3)。你知道吗

lst = [1,2,3,4,5,6]
avg = sum(lst)/len(lst)
res = list(filter(lambda x: x > avg, lst))
print(res)

将产生 [4,5,6]. 你知道吗

我更喜欢这种方法,因为它没有循环那么冗长,而且如果将来有这样的需要(例如,使用Spark),还可以更容易地转换为Pandas之类的框架或最终的并行实现。你知道吗

相关问题 更多 >