如何制作一个可以将间隔求和到嵌套数组中的函数?

How to make a fuction that can sum the Intervals into a nested array?

我有一个大学练习,我仍然无法解决这个问题。 (python)

这是我的问题:

编写名为 sumIntervals 的函数的代码,该函数采用空格列表和 returns 空格长度的总和。注意:重叠的间隔只能测量一次。

例如:

sumIntervals([[1,2], [6, 10], [11, 15]])  # Returns 9

sumIntervals([[1,4], [7, 10], [3, 5]])  # Returns 7

sumIntervals ([[1,5], [10, 20], [1, 6], [16,19], [5,11]])  # Returns 19

我已经做了一部分,但是没用。

p = []
s = 0
for i in list1:
    p.append(i[1] - i[0])
set(p)
list(p)
for c in p:
    s = s + c

list1 是包含子区间的列表,s 是包含总和的变量

我会这样做: 基本上我们在这里做的是将该输入列表分成不同的块,我们将这些块存储为 keyIndex 从那里我们 运行 另一个第二个 for 循环只是为了单独添加数字的差异,所以 [6,10] 会变成 [6,7,8,9] 来表示 10-6 = 4 的差值。最后我们将使用 set() 方法来删​​除任何重复项,因为你说你想要重叠只算了一个

myList = ([[1,5], [10, 20], [1, 6], [16,19], [5,11]])

def sumIntervals(inputList):
    output = []

    for keyIndex in range(len(inputList)):
        for keyDifference in range(inputList[keyIndex][0], inputList[keyIndex][1]):
            output.append(keyDifference)

    output = set(output)
    print(len(output))

sumIntervals(myList)

你可以使用集合(或字典)来处理这里的主要挑战:避免 重叠造成的重复计算。例如:

def sum_intervals(intervals):
    return len(set(
        i
        for a, b in intervals
        for i in range(a, b)
    ))

tests = (
    [[1,2], [6, 10], [11, 15]],
    [[1,4], [7, 10], [3, 5]],
    [[1,5], [10, 20], [1, 6], [16,19], [5,11]],
)

for t in tests:
    print(sum_intervals(t))  # 9  7  19