Python 按其作为索引的值删除列表中的元素

Python 按其作为索引的值删除列表中的元素,python,list,indexing,list-comprehension,Python,List,Indexing,List Comprehension,我有一个列表,它是从零开始的时间序列中的天数: days = [2,3,4,5,...] 我有另一个列表,它是从第0天开始的所有天的云分钟数: weather = [0,120,150,60,120,30,300,...] 我希望遍历天,如果天气中的相应索引大于某个值,则将其删除 我试过了 downtime = 100 days_new = [x for i, x in enumerate(days) if weather[i] < downtime] 当索引被删除时,2,4在天气列

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

days = [2,3,4,5,...]
我有另一个列表,它是从第0天开始的所有天的云分钟数:

weather = [0,120,150,60,120,30,300,...]
我希望遍历天,如果天气中的相应索引大于某个值,则将其删除

我试过了

downtime = 100
days_new = [x for i, x in enumerate(days) if weather[i] < downtime]
当索引被删除时,2,4在天气列表中的值大于100

但它是根据天数指数而不是其作为指数的价值来删除它们的。也就是说,只有当我的列表从0开始,而不是任何大于0的整数时,这才有效。如何解决此问题?

您的需求假设天气可以在天内被所有项目订阅,在这种情况下,您不需要枚举。以天为单位直接为天气指数:

您的需求假设天气可以在天内被所有项目订阅,在这种情况下,您不需要枚举。以天为单位直接为天气指数:


如果给出了所有日期的天气,并且day from days是天气指数:

downtime = 100
new_days = [day for day in days if weather[day] <= downtime]

如果给出了所有日期的天气,并且day from days是天气指数:

downtime = 100
new_days = [day for day in days if weather[day] <= downtime]
你可以试试这个

[x for x in days if weather[x] <= 100]
你可以试试这个

[x for x in days if weather[x] <= 100]
您可以这样尝试:

days = [2,3,4,5,...]
weather = [0,120,150,60,120,30,300,...]
downtime = 100
days_new = []
for x in days:
    if weather[x] < downtime:
        days_new.append(x)

# output :
days_new = [3, 5,...]
您可以这样尝试:

days = [2,3,4,5,...]
weather = [0,120,150,60,120,30,300,...]
downtime = 100
days_new = []
for x in days:
    if weather[x] < downtime:
        days_new.append(x)

# output :
days_new = [3, 5,...]

@因为他们把这些索引保留在你发布的代码应该有效的地方。@MosesKoledoye啊,我明白他的意思了。他说的方式有点让人困惑。除非这两个列表不同步,在这种情况下你必须做days_new=[x为i,x为in-days if weather[i+2]