如何计算函数中的列表

时间:2014-08-11 16:10:18

标签: python

所以我有一个小的工作代码,我只需要打印一个事件的计数,但到目前为止我只是成功打印实际的事件。

我需要打印一个项目的次数> 0

5 个答案:

答案 0 :(得分:1)

您最后应添加return count

def countpos(lsts):
     count = 0
     for lst in lsts:
         for val in lst:
             if val > 0:
                 count += 1
     return count

print countpos([[0, 0, 0, 0], [1, 0, 6, 0]])  # 2

您还可以使用生成器为符合条件的每个元素生成1,然后对所有元素求和:

def countpos(lsts):
    return sum(1 for lst in lsts
                 for val in lst
                 if val > 0)

print countpos([[0, 0, 0, 0], [1, 0, 6, 0]])  # 2

答案 1 :(得分:0)

def somefunction(y)
         count = 0
           for r in y:
               for i in r:
              if i >= 0:
                   count += 1
              #probably need to print the occurrence here. 

使用将存储答案的计数打印所有循环之外的答案

答案 2 :(得分:0)

input_lists = [[0, 0, 0, 0], [1, 0, 6, 0]]
count = sum([1 for input_list in input_lists for i in input_list if i > 0])

当然,如果您愿意,可以将其变为功能。基本上,您只需循环遍历input_lists中的列表,然后循环遍历每个列表中的值,检查该值是否大于0,并在每次找到大于零的值时构建1的列表。最后,您只需对该列表求和即可获得计数。这里应用的方法是调用列表理解,它是一种强大的技术。这个比你典型的第一个列表理解要复杂一点,因为我们正在做两个嵌套理解(列表中有两个'for'语句)和一个条件(if)

答案 3 :(得分:0)

2个更简单的方法:

使用lambdas:

def count(y):
    return sum(map(lambda x: len(filter(lambda i: i > 0, x)), y))

def count(y):
    return sum(len([i for i in x if i > 0]) for x in y)

答案 4 :(得分:-1)

def somefunction(y)
     count = 0
     for r in y:
          for i in r:
              if i >= 0:
                   count += 1
     return count

return count将返回总数。

print somefunction(myListofLists)

打印此函数将打印return语句。