有没有办法计算一组字符串列表的出现次数?
例如,当我有这个列表时,它会计算7个' '空格.
list = [[' ', ' ', ' ', ' ', ' ', ' ', ' ']]
print(list.count(' '))
Run Code Online (Sandbox Code Playgroud)
有没有办法可以做同样的事情,但是对于一组多个列表?像这样举例如下:
set = [[' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ']]
print(set.count(' '))
Run Code Online (Sandbox Code Playgroud)
当我以同样的方式这样做时,我得到的输出是0而不是实际的出现次数.
这有效:
>>> data = [[' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ']]
>>> sum(x.count(' ') for x in data)
21
Run Code Online (Sandbox Code Playgroud)
您需要计入每个子列表.我使用生成器表达式来执行此操作并对所有子列表中的结果求和.顺便说一句,不要set用作变量名.它是内置的.
虽然在许多情况下并不重要,但性能可能很有趣:
%timeit sum(x.count(' ') for x in data)
1000000 loops, best of 3: 1.28 µs per loop
Run Code Online (Sandbox Code Playgroud)
与
%timeit sum(1 for i in chain.from_iterable(data) if i==' ')
100000 loops, best of 3: 4.79 µs per loop
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
455 次 |
| 最近记录: |