有没有一个pythonic的方式循环和使用上一个项目

2024-05-23 17:42:12 发布

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

例如,我有一个数组X[1,3,2,5,1,3],我需要一个像移动窗口一样的新数组,在每3个项目中找到最小的==>;[1,1,1,2,1,1]

我知道我可以从array len()循环并使用list slip,但是有解决这个问题的pythonic方法吗?你知道吗

我尝试了X[1],发现类型(X[1])是int,无法追溯数组X

谢谢你的帮助。你知道吗

编辑:很抱歉给您带来不便。我在上面犯了个错误。 对于窗口1,只有第一个元素1,所以输出1 窗口2:[1,3]->;1 窗口3:[1,3,2]->;1 窗口4:[3、2、5]->;2

顺便说一句,anwsers很有帮助。谢谢您。你知道吗


Tags: 项目方法gt元素编辑类型len错误
3条回答
map(min, zip(a[1:]+[max(a)], [max(a)]+a, a+[max(a)]))

我不知道这是不是一个Python的方式。这只是一个棘手的一行,是不可取的普通循环。你知道吗

def pairwise( iterable, n=2 ):
    from itertools import tee, izip, islice
    return izip(*(islice(it,pos,None) for pos,it in enumerate(tee(iterable, n))))

 x = [1, 3, 2, 5, 1, 3]


list(pairwise(x,3))
#[(1, 3, 2), (3, 2, 5), (2, 5, 1), (5, 1, 3)]
map(min, pairwise(x,3))
#[1, 2, 1, 1]
In [33]: X = [1, 3, 2, 5, 1, 3]

In [34]: list(map(min, (X[i:i+3] for i in range(len(X)-2))))
Out[34]: [1, 2, 1, 1]

相关问题 更多 >