简体   繁体   English

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

[英]how to remove the elements of some elements of particular indies from both the lists?

I have got 2 lists 我有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']

I have a code that filters the list according to end date and start date. 我有一个代码,可以根据结束日期和开始日期过滤列表。 Say a user enters a date range from 1/1/2014 to 12/31/2014 then I need all the dates t hat falls between the range and the parameters for the remaining dates. 假设用户输入的日期范围是1/1/2014 1月1日至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)]

is the desired output 是所需的输出

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

I wrote the code: 我写了代码:

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

whiere t1 is the dates between start date and end date t1是开始日期和结束日期之间的日期

You are doing this wrongly, you should iterate over both of them together and create the lists you want. 您做错了这件事,您应该一起遍历它们两个并创建所需的列表。

You can use zip function for this. 您可以为此使用zip功能。

Example - 范例-

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']

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM