日付のリスト

timedelta を使って作成する日付リスト

from datetime import datetime, timedelta

# 指定日から7日間のリスト
dlist = [datetime.strptime('2020-10-28', '%Y-%m-%d') + timedelta(days=i) for i in range(7)]
# 検証
list = [d.strftime('%Y-%m-%d') for d in dlist]
print(list)

指定日から7日間のリスト を map(ラムダ関数, シーケンス)で作る

dlist = [d for d in map(lambda a, b=datetime.strptime('2020-10-28', '%Y-%m-%d'): b + timedelta(days=a), range(7))]
# 検証
list = [d.strftime('%Y-%m-%d') for d in dlist]
print(list)

timedelat( days= )を 、minutes に変えれば、分毎のリストも作れる

# 5分前からのリスト
dlist = [d for d in map(lambda a, b=datetime.now(): b + timedelta(minutes=-a), range(6))]
# 検証
list = [d.strftime('%Y-%m-%d %H:%M:%S') for d in dlist]
print(list)

でも、これは時刻の逆順になってしまうので、昇順にするには、

# リストにしてから、reverse()
dlist = [d for d in map(lambda a, b=datetime.now(): b + timedelta(minutes=-a), range(6))]
dlist.reverse()
# 検証
list = [d.strftime('%Y-%m-%d %H:%M:%S') for d in dlist]
print(list)

ちょっと、↑これだと脳がない。 ラムダの前に、逆順にする

dlist = [d for d in map(lambda a, b=datetime.now(): b + timedelta(minutes=-a), reversed(range(6)))]
# 検証
list = [d.strftime('%Y-%m-%d %H:%M:%S') for d in dlist]
print(list)

今月の1日~末日のリスト
monthrange( 年, 月 ) を使用する

from datetime import datetime, timedelta
import calendar

today = datetime.now();
dlist = [d for d in map(lambda a, b=datetime(today.year, today.month, 1): b + timedelta(days=a), range(calendar.monthrange(today.year, today.month)[1]))]
# 検証
list = [d.strftime('%Y-%m-%d') for d in dlist]
print(list)