在数组中计数连续实例

0 投票
2 回答
1344 浏览
提问于 2025-04-17 21:56

我现在的代码是用 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

撰写回答