【问题标题】:Count multiple occurrences in a set list计算集合列表中的多次出现
【发布时间】:2016-03-27 09:47:56
【问题描述】:

有没有办法计算一组字符串列表的出现次数?

例如,当我有这个列表时,它会计算 7 个 ' ' 空白。

list = [[' ', ' ', ' ', ' ', ' ', ' ', ' ']]
print(list.count(' '))

除了一组多个列表之外,有没有一种方法可以让我做同样的事情?比如下面这样:

set = [[' ', ' ', ' ', ' ', ' ', ' ', ' '], 
       [' ', ' ', ' ', ' ', ' ', ' ', ' '], 
       [' ', ' ', ' ', ' ', ' ', ' ', ' ']]
print(set.count(' '))

当我这样做时,我得到的输出是0,而不是实际的出现次数。

【问题讨论】:

    标签: python list count


    【解决方案1】:

    解决方案

    这行得通:

    >>> data = [[' ', ' ', ' ', ' ', ' ', ' ', ' '], 
                [' ', ' ', ' ', ' ', ' ', ' ', ' '], 
                [' ', ' ', ' ', ' ', ' ', ' ', ' ']]
    >>> sum(x.count(' ') for x in data)
    21
    

    您需要计算每个子列表。我使用generator expression 来执行此操作并将所有子列表的结果相加。 顺便说一句,不要使用 set 作为变量名。它是内置的。

    性能

    虽然在许多情况下并不那么重要,但性能可能很有趣:

    %timeit sum(x.count(' ') for x in data)
    1000000 loops, best of 3: 1.28 µs per loop
    

    对比

    %timeit sum(1 for i in chain.from_iterable(data) if i==' ')
    100000 loops, best of 3: 4.79 µs per loop
    

    【讨论】:

      猜你喜欢
      • 2017-03-08
      • 1970-01-01
      • 2014-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多