【问题标题】:Count numbers in python loop在python循环中计算数字
【发布时间】:2012-10-18 06:22:41
【问题描述】:

我正在尝试获取一个循环,它将告诉我从 0 到 2(不包括 2)的 50 个随机整数数组中 0 的数量。然后它将再次为获得的零数计算随机整数。

我尝试过这样做,但我在初级阶段卡住了,而且越来越令人沮丧,所以非常感谢任何帮助。

from numpy.random import randint

n = 50

R = randint(0,2,n)

for i in R:
    True = 0
    print array(True)

但它不返回一个数组,我不知道如何计算 0 的数量,因为我不能像往常一样使用 len 函数。

我也尝试过使用 while 循环,但遇到了类似的问题

【问题讨论】:

    标签: python loops for-loop while-loop


    【解决方案1】:

    嗯,不需要循环和求和。如果你有一个整数数组,你可以像这样计算零(或任何其他单独的数字)的数量:

    >>> R = [ 0, 1, 5, 0, 0]
    >>> print("There are", R.count(0), "zeros")
    There are 3 zeros
    

    【讨论】:

      【解决方案2】:

      也许这是您正在寻找的东西:

      from numpy.random import randint
      
      n = 50
      
      R = randint(0,2,n)
      
      def get_number_of_zeros(x):
          return sum(0 == ele for ele in x)
      
      while(len(R) > 0):
          number_of_zeros = get_number_of_zeros(R)
          print 'number of zeros is {}'.format(number_of_zeros)
          R = randint(0, 2, number_of_zeros)
      

      结果:

      number of zeros is 25
      number of zeros is 11
      number of zeros is 7
      number of zeros is 4
      number of zeros is 1
      number of zeros is 1
      number of zeros is 1
      number of zeros is 0
      

      【讨论】:

        【解决方案3】:

        要计算R 中的0s,您可以这样做

        sum(not n for n in R)
        

        这样做的好处是,即使您的数组中只有 1s 和 0s 以​​外的数字,它也可以工作。


        感谢 eryksun 指出这一点:您也可以这样做

        numpy.sum(R == 0)
        

        【讨论】:

        • 矢量化:numpy.sum(R == 0).
        • @user1778543 当然 - 如果n0,则not n 返回1,否则返回0not n for n in R:我们循环遍历R 并为每个元素n 计算not n,然后我们只需将这些值与sum 相加即可得到0s 的总数。
        【解决方案4】:

        生成数组:

        random_list = [random.randint(0,2) for x in xrange(50)]
        

        0 的个数:

        num_zeros = sum( 1 for x in random_list if x==0 )
        

        再次生成数组:

        random_list = [random.randint(0,2) for x in xrange(num_zeros)]
        

        【讨论】:

          【解决方案5】:

          由于您的数组仅包含 1 和 0,因此零的计数显然是

          num_zeroes = len(R) - sum(R)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-10-11
            • 2019-02-02
            • 2020-05-24
            • 1970-01-01
            • 1970-01-01
            • 2021-07-20
            • 2011-09-29
            相关资源
            最近更新 更多