我的代码目前返回一行包含print(line)
的CSV文件:
['0', '0', '0', '0', '0', '0', '0', '0', '1', '0', 'B']
我想计算连续的零实例,为我在该行的一个区块中提供最大的可用空间(座位预订系统项目)。我还想计算零的数量,给我两个值 - 最大的零块和列表中的零总数。非常感谢任何帮助!
答案 0 :(得分: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
答案 1 :(得分:2)
>>> 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