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

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

Python 计算列表平均值并返回大于整个列表数学平均值的元素的函数,python,loops,parameters,list-comprehension,Python,Loops,Parameters,List Comprehension,我试图创建一个函数,计算给定列表的平均值,然后返回该列表中大于该列表数学平均值的所有元素。例子: 如果给定列表为[1,2,3,4,5,6],则平均值为3.5。因此,函数应该打印出数字(4,5,6) 我已经将列表中的所有数字相加了,但无论我做什么,我都不知道如何得到平均值,或者让它打印出大于数学平均值的数字 到目前为止,我已经添加了任何给定列表的所有元素: def accum2(seq): total = 0 for x in seq: total += x ret

我试图创建一个函数,计算给定列表的平均值,然后返回该列表中大于该列表数学平均值的所有元素。例子: 如果给定列表为[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),但到目前为止,我只得到一个答案,它只是将给定列表中的所有数字相加


非常感谢您提供的任何帮助。

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

average = sum(seq) / len(seq)

从这里开始,只需使用一个条件语句(如果列表未排序,则可能必须首先对其进行排序)。在此基础上,您应该能够使用内置列表方法构建新列表。

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

average = sum(seq) / len(seq)

从这里开始,只需使用一个条件语句(如果列表未排序,则可能必须首先对其进行排序)。在此基础上,您应该能够使用内置列表方法构建一个新列表。

以下是一些简单的代码。 我补充了一些意见

    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)

这里有一些简单的代码应该可以工作。 我补充了一些意见

    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)

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

将产生 [4,5,6]


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

有许多正确的方法可以做到这一点,下面显示了其中一种(Python 3)

将产生 [4,5,6]


我更喜欢这种方法,因为它比循环更详细,如果将来需要(例如,使用Spark),也可以更容易地转换为Pandas之类的框架或最终的并行实现。

这是您工作的扩展版本:

def accum2(seq):
 total = 0

 for x in seq:
  total += x

 L=[]

 for x in seq:
   if x>total/len(seq):
      L.append(x)

 return L


print (accum2([1,2,3,4,5,6]))
但您可以简单地使用此代码中的前一个:

    def accum2(seq):

      return [x for x in seq if x>(sum(y for y in seq)/len(seq))]

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

这是您工作的扩展版本:

def accum2(seq):
 total = 0

 for x in seq:
  total += x

 L=[]

 for x in seq:
   if x>total/len(seq):
      L.append(x)

 return L


print (accum2([1,2,3,4,5,6]))
但您可以简单地使用此代码中的前一个:

    def accum2(seq):

      return [x for x in seq if x>(sum(y for y in seq)/len(seq))]

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

accum2()
唯一要做的就是将总数相加并返回。为什么你会期望它也打印更大的项目,而它显然没有代码来做这项工作?对不起,我应该更清楚我想说的。我知道代码只能相加总数,我需要帮助开始使用其余代码。将问题分解为步骤。第一步是计算序列的平均值。你已经有了序列的总和,所以你已经到了一半——你还需要序列中的项数。你知道如何得到它吗?我知道count()方法可以计算列表中有多少个元素,但我不确定如何将其插入现有代码中以除以总数。唯一的事情是将总数相加并返回它。为什么你会期望它也打印更大的项目,而它显然没有代码来做这项工作?对不起,我应该更清楚我想说的。我知道代码只能相加总数,我需要帮助开始使用其余代码。将问题分解为步骤。第一步是计算序列的平均值。你已经有了序列的总和,所以你已经到了一半——你还需要序列中的项数。你知道如何得到它吗?我知道count()方法可以计算列表中有多少个元素,但我不知道如何将其插入现有代码中以除以总数。