我有一个这样的列表:
l = [[8,7,6], [9,9,9], [4,5,9], [1,5,1]]
我想找到两个连续列表之间元素相减的最大值。 示例:
在 [9,9,9] 和 [8,7,6] 之间 -> 最大值为 [1,2,3] -> 3
在 [4,5,9] 和 [9,9,9] 之间 -> 最大值为 [5,4,0] -> 5
在 [1,5,1] 和 [4,5,9] 之间 -> 最大值 [3,0,8] -> 8
然后我想要一个包含 [3,5,8] 的列表 由于我的代码必须与 numpy 的 1.6.1 版本兼容,所以我是这样做的:
new_l = []
for index, i in enumerate(l):
if index < len(l)-1:
t = []
for jndex, j in enumerate(i):
t.append(l[index +1][jndex] - l[index][jndex])
new_l.append(max([abs(number) for number in t]))
new_l = new_l[:-1]
有没有更好的方法?提前致谢
请您参考如下方法:
使用常规 Python,您可以使用 zip 两次列表理解:
L = [[8,7,6], [9,9,9], [4,5,9], [1,5,1]]
res = [max(abs(i-j) for i, j in zip(*values)) for values in zip(L, L[1:])]
[3, 5, 8]
