在lis中求有限长度的最大值

2024-06-12 05:57:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我在寻找分块列表中的最大绝对值。在

例如,列表是:

[1, 2, 4, 5, 4, 5, 6, 7, 2, 6, -9, 6, 4, 2, 7, 8]

我想找到lookahead=4的最大值。对于这种情况,它将返回我:

^{pr2}$

如何简单地使用Python?在

^{3}$

我知道我可以用for循环来检查这个。但我相信python中有一种更简单的方法。在


Tags: 方法列表for情况分块lookaheadpr2
3条回答

list映射到abs(),然后chunk the ^{}并将其发送到max()

array = [1,2,4,5,4,5,6,7,2,6,-9,6,4,2,7,8]
array = [abs(item) for item in array]
# use linked question's answer to chunk
# array = [[1,2,4,5], [4,5,6,7], [2,6,9,6], [4,2,7,8]] # chunked abs()'ed list
values = [max(item) for item in array]

结果:

^{pr2}$

另一种方法是使用^{}模块中的islice方法:

>>> from itertools import islice
>>> [max(islice(map(abs,array),i,i+4)) for i in range(0,len(array),4)]
[5, 7, 9, 8]

要分解它:

1-map(abs, array)返回数组元素的所有绝对值的列表
2-islice(map(abs,array),i,i+4))将数组分成四个元素块
3-i in range(0,len(array),4)步进范围为islice,以避免重叠

这可以用“作为伙伴的函数”来包装:

^{pr2}$

使用Python标准:

[max(abs(x) for x in arr[i:i+4]) for i in range(0, len(arr), 4)]

如果数组不能平均划分,也可以这样做。在

相关问题 更多 >