Есть конечно ещё вариант:
xdate = []
for i in xrange(2012, 2016):
for j in [1, 4, 7, 10]
xdate.append(mdate.date2num(date(i, j, 1)))
Подойдёт для генерации любого диапазона, но опять строчек многовато))
самое смешное, что drange почему-то оперирует максимум днями. На месяцы он не способен. Хотя казалось бы, в чём разница ((