gpt4 book ai didi

python - 根据同一列表中的先前项目从 Python 列表中删除项目

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

假设我有一个简单的数字列表,例如

simple_list = range(100)

我想缩短这个列表,例如让值之间的差距大于或等于 5,所以它应该看起来像

[0, 5, 10...]

仅供引用,实际列表没有规律的递增,但它是有序的

我正在尝试使用列表理解来做到这一点,但下面显然返回一个空列表:

simple_list2 = [x for x in simple_list if x-simple_list[max(0,x-1)] >= 5]

如果满足条件,我可以通过附加到列表来循环执行此操作,但我特别想知道是否有一种方法可以使用列表理解来执行此操作?

最佳答案

这不是理解的用例,你必须使用循环,因为可能有任意数量的元素在一起,它们之间的元素少于五个,你不能只检查下一个或任意 n 个数字,除非你知道数据有一些非常特定的格式:

simple_list = range(100)

def f(l):
it = iter(l)
i = next(it)
for ele in it:
if abs(ele - i) >= 5:
yield i
i = ele
yield i


simple_list[:] = f(simple_list)
print(simple_list)
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

一个更好的例子是:

l = [1, 2, 2, 2, 3, 3, 3, 10, 12, 13, 13, 18, 24]

l[:] = f(l)

print(l)

哪个会返回:

[1, 10, 18, 24]

如果您的数据总是按升序排列,您可以删除 absif ele - i >= 5

关于python - 根据同一列表中的先前项目从 Python 列表中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34425768/

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