有没有办法计算一组字符串列表出现的次数?
例如,当我有这个列表时,它算作 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/