【问题标题】:Python: How to count even numbers from a random listPython:如何从随机列表中计算偶数
【发布时间】:2018-09-25 18:44:00
【问题描述】:
import random

import math

count = 0

def print2D(list) :

    for row in range(0, 4):
        for col in range(0, 3):
            print(list[row][col], end = ' ')
        print(' ')

list = [[random.randint(0, 5) for x in range(3)] for y in range(4)]

print2D(list)

这是我当前的代码。我需要创建一个新函数来查找并计算列表中的偶数。偶数不需要加起来,我只需要数一下有多少。我是 Python 新手,我的讲座视频没有多大帮助。这是我迄今为止尝试过的:

1)

count = 0

if list % 2 == 0 :

   count += 1

print(count)

num 为列表

和 2) 拆分列表。该列表是随机的,所以我不确定如何拆分列表

【问题讨论】:

  • 请格式化您的代码。

标签: python


【解决方案1】:

这是使用列表理解的一种方式:

lst = [[random.randint(0, 5) for x in range(3)] for y in range(4)]
print(lst)
print(len([item for sublst in lst for item in sublst if item%2 == 0]))
# [[4, 3, 4], [4, 2, 2], [5, 3, 4], [5, 1, 1]]
# 6        

我们形成一个仅包含来自lst 的偶数的列表。然后,len() 计算该列表中的项目数。

【讨论】:

  • 考虑使用sum 和生成器表达式,而不是len,并使用列表推导来提高内存效率。
  • @timgeb 但是,当我们需要在这里计数时,sum 不是将所有偶数相加吗?对不起,如果我错了。
  • sum(1 for sublst in lst for item in sublst if item%2 == 0) :)
  • @timgeb 哦,这很聪明。你应该发布这个。
【解决方案2】:

类似于 theausome 的回答,但没有建立一个列表:

>>> lst = [[random.randint(0, 5) for x in range(3)] for y in range(4)]
>>> lst
>>> [[0, 4, 5], [1, 2, 2], [0, 0, 0], [0, 4, 5]]
>>> sum(1 for sublst in lst for item in sublst if item%2 == 0)
9

你也可以写if not item%2而不是if item%2 == 0,但我更喜欢更明确的版本。

【讨论】:

    【解决方案3】:

    希望你更清楚。

    import random
    import math
    def count(list):
       return len([item for sublst in lst for item in sublst if item%2 == 0])
    
    lst = [[random.randint(0, 5) for x in range(3)] for y in range(4)]
    print(count(lst))
    

    谢谢

    【讨论】:

      【解决方案4】:
      import random
      import math
      def count(list):
        count = 0
        for row in range(0, 4):
          for col in range(0, 3):
              if list[row][col] % 2 == 0 :
                  count+= 1
      print('Total Even Numbers :',count)
      print(list)
      
      list = [[random.randint(0, 5) for x in range(3)] for y in range(4)]
      count(list)
      

      输出:偶数总数:4

      [[3, 5, 0], [5, 1, 4], [4, 2, 3], [3, 1, 1]]

      【讨论】:

        【解决方案5】:

        如果你想在一个范围内求和:

            print(sum(1 for i in range(a,b) if i%2 == 0))
        

        【讨论】:

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