在python中查找列表中两个整数之间的最大增量

Luc*_*eno 13 python

我有一个整数列表,即:

values = [55, 55, 56, 57, 57, 57, 57, 62, 63, 64, 79, 80]
Run Code Online (Sandbox Code Playgroud)

我试图找到两个连续数字之间的最大差异.在这种情况下,从64-> 79将是15.数字可以是负数或正数,增加或减少或两者兼而有之.重要的是我需要找到两个连续数字之间的最大增量.

最快的方法是什么?这些列表可以包含数百到数千个整数.

编辑:这是我现在的代码:

    prev_value = values[0]
    largest_delta = 0

    for value in values:
            delta = value - prev_value
            if delta > largest_delta:
                    largest_delta = delta
            prev_value = value

    return largest_delta
Run Code Online (Sandbox Code Playgroud)

有更快的方法吗?这需要一段时间.

dan*_*n04 23

max(abs(x - y) for (x, y) in zip(values[1:], values[:-1]))
Run Code Online (Sandbox Code Playgroud)

  • 但是对于这样大的列表,使用`itertools.izip`来避免在内存中构造元组列表 (2认同)
  • @aaronasterling:在 Python 3.x 中,`zip` 不构造列表。我最初建议在 2.x 中使用 `itertools.izip`,但它并没有真正帮助,因为切片构建了两个新列表。你可以使用 `itertools.islice` 来解决这个问题。 (2认同)
  • @dan04。好点。您还可以通过不切片第二个列表来避免构建新列表之一。`zip(values[1:], values)`。zip 将在 `values[1:]` 终止时终止 (2认同)