Create a list of lists using Python -
i have list year , day starting december till february 2003 2005. want divide list list of lists hold year day december february:
a = ['2003337', '2003345', '2003353', '2003361', '2004001', '2004009', '2004017', '2004025', '2004033', '2004041', '2004049', '2004057', '2004337', '2004345', '2004353', '2004361', '2005001', '2005009', '2005017', '2005025', '2005033', '2005041', '2005049', '2005057'] output should like:
b = [['2003337', '2003345', '2003353', '2003361', '2004001', '2004009', '2004017', '2004025', '2004033', '2004041', '2004049', '2004057'] ['2004337', '2004345', '2004353', '2004361', '2005001', '2005009', '2005017', '2005025', '2005033', '2005041', '2005049', '2005057']] and loop on each list of lists. use even splitting there chance of missing year days. better not evenly split. suggestions?
convert datetime, group year end nearest.
import datetime import itertools #convert "year-day" string datetime object def datetime_from_year_day(s): year = int(s[:4]) days = int(s[4:]) return datetime.datetime(year=year, month=1, day=1) + datetime.timedelta(days=days-1) #returns year end closest date, whether in past or future def nearest_year_end(d): if d.month <= 6: return d.year-1 else: return d.year = ['2003337', '2003345', '2003353', '2003361', '2004001', '2004009', '2004017', '2004025', '2004033', '2004041', '2004049', '2004057', '2004337', '2004345', '2004353', '2004361', '2005001', '2005009', '2005017', '2005025', '2005033', '2005041', '2005049', '2005057'] result = [list(v) k,v in itertools.groupby(a, lambda s: nearest_year_end(datetime_from_year_day(s)))] print result result:
[['2003337', '2003345', '2003353', '2003361', '2004001', '2004009', '2004017', '2004025', '2004033', '2004041', '2004049', '2004057'], ['2004337', '2004345', '2004353', '2004361', '2005001', '2005009', '2005017', '2005025', '2005033', '2005041', '2005049', '2005057']]
Comments
Post a Comment