尝试创建一个名为monthDetails
的列表,其中包含13个项目。第一个项目是年份,例如2015年,其余12个项目是包含月份的元组,如下所示:
例如,1月将是:
('JANUARY', [' ', ' ', ' ', ' ', '1', ' 2', ' 3', ' 4',
... ' 30', ' 31', ' ', ' ', ' ', ' ', ' ', ' ', ' '])
第一个条目是月份名称,第二个条目是日期。
如何创建主列表,然后将所需数据添加到主列表中的其他12个元组?
答案 0 :(得分:0)
访问列表中元组内的列表:
year = [
('JANUARY', [' ', '1', ... ' 30', ' 31', ' ']),
('MAY', [' ', '1', ... ' 30', ' 31', ' '])
]
print year ## the whole thing
print year[0] ## ('January', [' ', '1', ... '31', ' '])
print year[0][0] ## 'January'
print year[0][1] ## [' ', ' ', ... ' 31', ' ', ...]
这种方法的许多问题之一是,一旦创建了元组,您就无法对其进行赋值。因此,您无法创建主列表,然后将所需数据添加到主列表中的其他12个元组"。您必须在创建元组之前创建内部列表。获得元组后,可以将其添加到外部列表中。
当然,最大的问题是对这类数据进行硬编码。您可以(并且应该)使用日期库,例如python的日期时间。 每当需要有关特定日期的信息时,您都可以创建日期对象:
import datetime
d = datetime.date(2015, 1, 1)
print d.strftime("%A"), d.year, d.month, d.day
d = datetime.date(2015, 1, 31)
print d.strftime("%A %x")
您可以提前一个月(例如打印日历):
m = 1
d = 1
date = datetime.date(2015, m, d)
while date.month == m:
wd = date.isoweekday() ## Mon = 1, ... Sun = 7
## do whatever you need
print date.strftime("%A %x")
d += 1
date = date.replace(day=d) ## new date with the next day
我建议您仔细查看https://docs.python.org/2/library/datetime.html#date-objects
有更有效的方法可以做到这一点,但这很简单,希望你能理解。