拆分列表中的元素并计算给定一周的小时数

Split elements in a list and compute hours for a given week

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

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

我想拆分此字符串并计算 EC2 实例处于 "power on" 状态的小时数。

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

仍在学习 Python,所以我确信我可以想出一种蛮力方法来计算它。但是,我正在寻找 "elegant" 解决方案的指针,其中我没有使用太多循环。

请保持安全并保持友善。

以下方法可以解决问题:

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