gpt4 book ai didi

Python将列表中的元素与上一个和下一个进行比较

转载 作者:行者123 更新时间:2023-11-28 22:50:33 25 4
gpt4 key购买 nike

在列表中,我想去掉与前一个和下一个不同的元素(例如:差异大于 5)

n=[1913, 2048, 2049, 2050, 2052, 2052, 2054, 2055]
[x for x,y in zip(n,n[1:]) if y-x<5]

它几乎可以工作:它返回:[2048, 2049, 2050, 2052, 2052, 2054]

关键是最后一个元素被省略了。

有没有一种快速有效的方法来获取[2048, 2049, 2050, 2052, 2052, 2054, 2055]提前致谢主场

最佳答案

zip 通常会工作到最小的可迭代对象耗尽为止。这就是为什么您的最后一个值被忽略的原因。我们可以使用 itertools.izip_longest 来解决这个问题,如果最短的可迭代对象耗尽,它默认返回 None

如果 yNone 且表达式为 y or x,我们将取 x 本身的值。

from itertools import izip_longest as ex_zip
n = [1913, 2048, 2049, 2050, 2052, 2052, 2054, 2055]
print [x for x, y in ex_zip(n,n[1:]) if (y or x) - x < 5]
# [2048, 2049, 2050, 2052, 2052, 2054, 2055]

关于Python将列表中的元素与上一个和下一个进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22538556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com