【问题标题】:I want make this(sum) as a list form in python [duplicate]我想把这个(总和)作为python中的列表形式[重复]
【发布时间】:2017-09-25 04:11:21
【问题描述】:

marks = [90, 25, 67, 45, 80] a = marks print(marks.count(a>=60))

我想看看有多少学生的分数超过了 60

【问题讨论】:

  • "marks over 60" 表示a > 60,而不是a >= 60,包含在内。

标签: python


【解决方案1】:

你可以这样做:

In [6]: sum(x >= 60 for x in marks)
Out[6]: 3

【讨论】:

    【解决方案2】:

    您可以使用filter 仅包含您关心的标记:

    marks = [90, 25, 67, 45, 80]
    print(len(filter(lambda x: x>=60, marks)))
    

    【讨论】:

      【解决方案3】:

      60 分以上有多少?

      >>> marks = [90, 25, 67, 45, 80]
      >>> len([score for score in marks if score > 60])
      3
      

      这使用列表推导创建一个新列表,其中仅包含超过 60 的分数,然后新列表的长度告诉您有许多分数超过 60。

      另一种常见的方式是使用sum()

      >>> sum(1 if score > 60 else 0 for score in marks)
      3
      

      您还可以利用布尔值是整数这一事实:

      >>> sum(score > 60 for score in marks)
      3
      

      或者,为了更好地理解,使用 for 循环:

      count = 0
      
      for score in marks:
          if score > 60:
              count += 1
      
      print count
      

      【讨论】:

        【解决方案4】:

        我希望这篇文章也能有所帮助。

        这里我们使用filter 函数获取大于或等于60 的元素,然后使用len 函数获取否。元素。

        Try this code snippet here

        marks = [90, 25, 67, 45, 80]
        print(len(filter(lambda x: x>=60,marks)))
        

        【讨论】:

        • 反对票的原因将对我有所帮助。谁投了反对票?
        • 除了这段代码打印237,你还需要在Python 3中导入functools.reduce。这应该是一个很大的提示,reduce()不再受青睐。将 filter()lambda 组合,然后将 reduce() 组合起来效率低下,并且比等效的列表理解或使用 sum() 的可读性差。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-19
        • 2020-04-05
        • 2017-05-14
        • 1970-01-01
        • 2012-01-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多