如何从列表中删除特定独立元素的某些元素的元素?

时间:2015-07-13 17:15:29

标签: python list

我有2个名单

dt_dates= [datetime.datetime(2013, 4, 6, 0, 0), datetime.datetime(2013, 5, 4, 0, 0), datetime.datetime(2013, 6, 26, 0, 0), datetime.datetime(2013, 7, 26, 0, 0), datetime.datetime(2013, 9, 5, 0, 0), datetime.datetime(2013, 10, 7, 0, 0), datetime.datetime(2013, 10, 12, 0, 0), datetime.datetime(2014, 4, 12, 0, 0), datetime.datetime(2014, 5, 10, 0, 0), datetime.datetime(2014, 6, 12, 0, 0), datetime.datetime(2014, 7, 19, 0, 0), datetime.datetime(2014, 8, 15, 0, 0), datetime.datetime(2014, 9, 17, 0, 0), datetime.datetime(2015, 4, 21, 0, 0), datetime.datetime(2015, 5, 28, 0, 0), datetime.datetime(2015, 6, 26, 0, 0)]

param=['14', '8', '24', '21.5', '28.5', '9', '9.5', '14.5', '5.5', '21', '19', '25', '25', '18', '12', '32']

我有一个代码根据结束日期和开始日期过滤列表。假设用户输入的日期范围为1/1/201412/31/2014,那么我需要所有日期都在范围和剩余日期的参数之间。

dt_dates_filtered= [datetime.datetime(2014, 4, 12, 0, 0), datetime.datetime(2014, 5, 10, 0, 0), datetime.datetime(2014, 6, 12, 0, 0), datetime.datetime(2014, 7, 19, 0, 0), datetime.datetime(2014, 8, 15, 0, 0), datetime.datetime(2014, 9, 17, 0, 0)]

是所需的输出

parameters_filtered=['14.5', '5.5', '21', '19', '25', '25']

我写了代码:

for i,v in enumerate (dt_dates):
    if t1[i]:
        filtered_parameter.append(param[i])

whiere t1是开始日期和结束日期之间的日期

1 个答案:

答案 0 :(得分:1)

你这样做错了,你应该一起迭代它们并创建你想要的列表。

您可以使用zip功能。

示例 -

dt_dates= [datetime.datetime(2013, 4, 6, 0, 0), datetime.datetime(2013, 5, 4, 0, 0), datetime.datetime(2013, 6, 26, 0, 0), datetime.datetime(2013, 7, 26, 0, 0), datetime.datetime(2013, 9, 5, 0, 0), datetime.datetime(2013, 10, 7, 0, 0), datetime.datetime(2013, 10, 12, 0, 0), datetime.datetime(2014, 4, 12, 0, 0), datetime.datetime(2014, 5, 10, 0, 0), datetime.datetime(2014, 6, 12, 0, 0), datetime.datetime(2014, 7, 19, 0, 0), datetime.datetime(2014, 8, 15, 0, 0), datetime.datetime(2014, 9, 17, 0, 0), datetime.datetime(2015, 4, 21, 0, 0), datetime.datetime(2015, 5, 28, 0, 0), datetime.datetime(2015, 6, 26, 0, 0)]
param=['14', '8', '24', '21.5', '28.5', '9', '9.5', '14.5', '5.5', '21', '19', '25', '25', '18', '12', '32']

dt_dates_filtered= []
parameters_filtered=[]

start_date = datetime.datetime(2014,1,1,0,0,0)
end_date = datetime.datetime(2014,12,31,0,0,0)

for x in zip(dt_dates, param):
    if start_date < x[0] < end_date:
            dt_dates_filtered.append(x[0])
            parameters_filtered.append(x[1])

dt_dates_filtered
>>> [datetime.datetime(2014, 4, 12, 0, 0), datetime.datetime(2014, 5, 10, 0, 0), datetime.datetime(2014, 6, 12, 0, 0), datetime.datetime(2014, 7, 19, 0, 0), datetime.datetime(2014, 8, 15, 0, 0), datetime.datetime(2014, 9, 17, 0, 0)]
parameters_filtered
>>> ['14.5', '5.5', '21', '19', '25', '25']