在列表中创建列表
Create a list in a list
正在尝试创建一个名为 monthDetails
的列表,其中包含 13 个项目。第一项是年份,例如2015,其余12项是包含月份的元组,如下所示:
例如,一月为:
('JANUARY', [' ', ' ', ' ', ' ', '1', ' 2', ' 3', ' 4',
... ' 30', ' 31', ' ', ' ', ' ', ' ', ' ', ' ', ' '])
第一项是月份名称,第二项是日期。
如何创建主列表,然后将所需数据添加到主列表中的其他 12 个元组?
访问列表中元组中的列表:
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
还有更有效的方法来做到这一点,但这很简单,希望您能理解。
正在尝试创建一个名为 monthDetails
的列表,其中包含 13 个项目。第一项是年份,例如2015,其余12项是包含月份的元组,如下所示:
例如,一月为:
('JANUARY', [' ', ' ', ' ', ' ', '1', ' 2', ' 3', ' 4',
... ' 30', ' 31', ' ', ' ', ' ', ' ', ' ', ' ', ' '])
第一项是月份名称,第二项是日期。
如何创建主列表,然后将所需数据添加到主列表中的其他 12 个元组?
访问列表中元组中的列表:
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
还有更有效的方法来做到这一点,但这很简单,希望您能理解。