我有一个浮点列表,例如[x1,x2,x3,x4,....xn]绘制为折线图。我想找到坡度最陡的一组点。
现在,我正在计算循环中一组点之间的差异并使用该max()函数来确定最大点。
任何其他优雅的方式来做到这一点?
假设points是您的值列表,您可以使用以下方法计算单行中的差异:
max_slope = max([x - z for x, z in zip(points[:-1], points[1:])])
Run Code Online (Sandbox Code Playgroud)
但是你在紧凑性中获得的,你可能会失去可读性。
在这个列表理解中发生的事情如下:
points[:-1]& points[1:]。Points[:-1]从原始列表的开头开始,到倒数第二个项目(包括)。Points[1:]从第二个项目开始,一直到最后一个项目(再次包括)。例子
example_list = [1, 2, 3, 4, 5]
ex_a = example_list[:-1] # [1, 2, 3, 4]
ex_b = example_list[1:] # [2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
zip它不会在 Python 3 中创建列表,因此您需要将它的返回值传递给list参数。喜欢:
example_list = [1, 2, 3, 4, 5]
ex_a = example_list[:-1] # [1, 2, 3, 4]
ex_b = example_list[1:] # [2, 3, 4, 5]
print(list(zip(ex_a, ex_b))) # [(1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
Run Code Online (Sandbox Code Playgroud)
如果最大斜率的位置也很有趣,您可以使用该.index()方法从创建的列表中获取索引。但是,在这种情况下,最好保存由推导式创建的列表,而不仅仅是使用它。
| 归档时间: |
|
| 查看次数: |
5064 次 |
| 最近记录: |