在数组中计数连续实例
我现在的代码是用 print(line)
来输出CSV文件中的一行:
['0', '0', '0', '0', '0', '0', '0', '0', '1', '0', 'B']
我想要计算连续出现的零的次数,这样我就能知道这一行中最大的连续空位有多少(这是一个座位预定系统的项目)。我还想统计零的总数,这样我就能得到两个值:最大的连续零的块和列表中零的总数。任何帮助都非常感谢!
2 个回答
3
>>> from itertools import groupby
>>> lis = ['0', '0', '0', '0', '0', '0', '0', '0', '1', '0', 'B']
总计数量:
>>> lis.count('0')
9
连续零的最大数量:
>>> max(sum(1 for _ in g) for k, g in groupby(lis) if k=='0')
8
4
使用 itertools.groupby()
来按连续的零进行分组:
from itertools import groupby
max_run = 0
totalcount = line.count('0')
if totalcount:
max_run = max(sum(1 for _ in g) for k, g in groupby(line) if k == '0')
这里需要用到 if
,因为如果这一行没有 '0'
的值,max()
就会报错,提示序列是空的。
示例:
>>> from itertools import groupby
>>> line = ['0', '0', '0', '0', '0', '0', '0', '0', '1', '0', 'B']
>>> line.count('0')
9
>>> max(sum(1 for _ in g) for k, g in groupby(line) if k == '0')
8