首页 > 解决方案 > 拆分列表中的元素并计算给定周的小时数

问题描述

我有一个字符串,它表示 EC2 实例在一周中的每一天开启和关闭的时间 - 请参阅附图以供参考。

从图像产生的字符串如下:,,4,15,,,4,9,,,5,10,,

我想拆分此字符串并计算 EC2 实例处于“开机”状态的小时数。

在这种情况下,我相信它将是 (15-4) + (9-4) + (10-5) = 12。

仍在学习 Python,所以我确信我可以想出一种蛮力方法来计算它。但是,我正在寻找不使用太多循环的“优雅”解决方案的指针。

请保持安全并保持友善。

在此处输入图像描述

标签: pythonlisttimedays

解决方案


以下将解决问题:

s = ",,4,15,,,4,9,,,5,10,,"

tokens = (int(t) for t in s.split(',') if t)
sum(y - x for x, y in zip(tokens, tokens))
# 21

tokens是对字符串中编码的所有整数的迭代器。通过zipping它本身,我们可以获得连续的相邻对,我们可以克服它们的差异sum。或者,如果您更喜欢列表和切片:

tokens = [int(t) for t in s.split(',') if t]
sum(tokens[1::2]) - sum(tokens[::2])
# 21

推荐阅读