python - 计算集合列表中的多次出现

标签 python list count

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

例如,当我有这个列表时,它算作 7 个 ' ' 空格。

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

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

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

当我以同样的方式执行此操作时,我得到的输出是 0 而不是实际的出现次数。

最佳答案

解决方案

这个有效:

>>> 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

关于python - 计算集合列表中的多次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36245973/

相关文章:

python - 如何更改 python 的 "full name"(类似 `cpython-34m-x86_64-linux-gnu` )?

C# 删除重复条目(但不保留第一个条目和第二个条目)

如果满足某些条件,Excel 用数字计数单元格

python - 我想异常处理 'list index out of range.'

r - 如何创建一个新列,其中包含 df 中的唯一值计数(按 r 中的组)

mysql - 带计数的 SQL 语句

php - 使用 pdo fetch_group 将 sql 计数保存为单独的变量

python - 如何有效地识别 pandas 数据框中的字符串并对其进行分类?

python - 在 Django 中,我应该在哪里放置计算外键的函数?

python - anaconda 的 xgboost 安装问题