【问题标题】:print average of a generated list打印生成列表的平均值
【发布时间】:2020-09-23 18:17:35
【问题描述】:

我正在尝试生成长度为 n 的整数列表 n 由用户输入。 然后打印列表的最小和最大数以及平均值。

我已经设法让它生成数字并打印最小和最大的数字。 我试图按项目划分列表,但我有点卡住了。 我想也许我的逻辑不对?

e = int(input("enter a num: "))
import random
randomlist = []
for i in range(e):
    n = random.randint(1,101)
    randomlist.append(n)
    avg = randomlist/e
print("generated values:",randomlist)
print (min(randomlist),max(randomlist),avg(randomlist))

【问题讨论】:

  • avg = sum(randomlist) / e 您不能将列表除以一个数字,您必须找到列表的总和。你不能这样做 avg(randomlist) 因为 avg 是变量所以你不能调用变量否则你可以使用 lambda avg = lambda x: sum(x) / e

标签: python-3.x list random


【解决方案1】:

首先,您尝试在列表中使用/ 运算符(在avg = randomlist/e 行中),这是不可能的。其次,然后您尝试调用该平均值作为函数(使用avg(randomlist))。如果您只需要列表元素的平均值,请取总和除以元素的数量。

这样做,您的代码将如下所示:

import random

randomlist = []
e = int(input("enter a num: "))

for i in range(e):
    n = random.randint(1,101)
    randomlist.append(n)

print("generated values:",randomlist)
print(min(randomlist),max(randomlist),sum(randomlist)/e)

很高兴为您提供帮助!

【讨论】:

    【解决方案2】:

    你必须对列表元素求和才能找到平均值。

    avg = sum(randomlist)/e
    

    【讨论】:

      【解决方案3】:

      @deadshot 绝对是正确的,但我希望您能展示另一种计算方式:

      为了加快您的代码速度,请使用内联 for 循环:

      random_list = [random.randint(1, 101) for _ in range(e)]
      

      您也可以使用numpy 获取minmax 和平均 (mean)

      代码:


      import random
      import numpy as np
      
      e = int(input("enter a num: "))
      
      random_list = [random.randint(1, 101) for _ in range(e)]
      
      print("generated values:", random_list)
      print("Min: {}, Max: {}, Mean: {}\n".format(np.min(random_list), np.max(random_list), np.mean(random_list)))
      

      结果:

      enter a num: 5
      generated values: [68, 63, 79, 20, 3]
      Min: 3, Max: 79, Mean: 46.6
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多