我有两个函数dte()
并生成dates()
,它们都在特定范围内打印日期。
def dte():
date = (' '.join(map(str,ddt)))
return date
print dte()
def generate_dates(start_date, end_date):
td = datetime.timedelta(hours=24)
current_date = start_date
while current_date <= end_date:
print current_date
current_date += td
start_date = datetime.date(2017, 10, 25)
end_date = datetime.date(2017, 10, 28)
dte()
包含一些缺失日期,而generate_dates()
已完成。如何比较它们并将其存储在另一个缺失值为0的列表中?
例如:[2017-10-25 , 0 , 2017-10-27 , 0 , 0 , 2017-10-30...]
编辑:这是打印两个功能时的输出:
('2017-07-26',) ('2017-07-27',) ('2017-07-28',) ('2017-07-29',) ('2017-07-30',) ('2017-07-31',) ('2017-08-01',) ('2017-08-02',) ('2017-08-03',) ('2017-08-04',) ('2017-08-05',) ('2017-08-08',) ('2017-08-09',) ('2017-08-10',) ('2017-08-11',) ('2017-08-12',) ('2017-08-14',) ('2017-08-16',) ('2017-08-17',) ('2017-08-18',) ('2017-08-19',) ('2017-08-21',) ('2017-08-22',) ('2017-08-23',) ('2017-08-24',)
2017-07-26
2017-07-27
2017-07-28
2017-07-29
2017-07-30
2017-07-31
2017-08-01
2017-08-02
2017-08-03
2017-08-04
2017-08-05
2017-08-06
2017-08-07
2017-08-08
2017-08-09
2017-08-10
2017-08-11
2017-08-12
2017-08-13
2017-08-14
2017-08-15
2017-08-16
2017-08-17
2017-08-18
2017-08-19
2017-08-20
2017-08-21
2017-08-22
2017-08-23
2017-08-24
答案 0 :(得分:0)
以下是使用您自己的代码的简单示例:
import datetime
ddt = [
datetime.date(2017,10,25),
datetime.date(2017,10,27),
datetime.date(2017,10,28),
]
def generate_dates(start_date, end_date):
res = []
td = datetime.timedelta(hours=24)
current_date = start_date
while current_date <= end_date:
res.append(current_date)
current_date += td
return res
start_date = datetime.date(2017, 10, 25)
end_date = datetime.date(2017, 10, 30)
all_dates = generate_dates(start_date, end_date)
res = []
for date in all_dates:
if date not in ddt:
res.append(0)
else:
res.append(date)
print map(str, res)
输出:
['2017-10-25', '0', '2017-10-27', '2017-10-28', '0', '0']
请注意,我更改了generate_dates()
函数以返回完整的日期范围(不仅仅是打印它们)。
另请注意,此代码不是最佳的。它的复杂度为O(N * M),其中N - 的大小为ddt
,M - 大小为all_dates
。因此,对于大型列表来说,它绝对不是最佳选择。如果您的列表ddt
很大,您可能希望在最后一个周期之前将其转换为集合:
ddt = set(ddt)
这种复杂性将是O(M)。