Skip to main content
 首页 » 编程设计

python之按值作为索引删除列表中的元素

2025年05月04日16leader

我有一个列表,它是不从零开始的时间序列中的天数:

days = [2,3,4,5,...] 

我有另一个列表,它是从第 0 天开始的所有天的云分钟数:

weather = [0,120,150,60,120,30,300,...] 

我想遍历 days,如果 weather 中的相应索引大于某个值,则将其删除。

我试过了

downtime = 100 
days_new = [x for i, x in enumerate(days) if weather[i] < downtime] 

这应该导致:

days_new = [3,5,...] 

因为删除的索引 (2,4) 在列表 weather 中的值大于 100。

但它是根据 days 的 index 而不是它作为索引的值来删除它们。 IE。这仅在我的列表从 0 开始时有效,而不是任何大于 0 的整数。我该如何解决这个问题?

请您参考如下方法:

您的要求假设weather subscriptable days 中的所有项目,在这种情况下您不需要enumerate。直接用 days 中的索引索引 weather:

days_new = [x for x in days if weather[x] < downtime]