如何在list,python中的每个值之前放置每个月的名称

时间:2018-01-23 09:10:45

标签: python python-3.x

所以我制定了一个程序,计算每个月的工作时数,不包括今年的周末

 M = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

    mod_sums = [ (s - (s // 7) - ((s + 1) // 7)) * 8 for s in M]


    values = ' '.join(str(v) for v in mod_sums)
    print(values)

这是代码的结果:

0 184 160 184 176 184 176 184 184 176 184 176 184

所以现在我要做的就是在每个号码之前我希望它显示月份的名称,例如:

0 January = 184 February = 160 March = 184 etc, etc.. 

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:2)

在这里,只需创建一个月份列表,然后加入它们,

In [18]: month_lst = ['January', 'Feburary', 'March', 'April', 'May', 'June', 'July', 
    ...:               'August', 'September', 'October', 'November', 'December']

In [20]: ' ,'.join(' = '.join(v) for v in zip(month_lst,map(str,mod_sums)))
Out[20]: 'January = 184 ,Feburary = 160 ,March = 184 ,April = 176 ,May = 184 ,June = 176 ,July = 184 ,August = 184 ,September = 176 ,October = 184 ,November = 176 ,December = 184'

答案 1 :(得分:1)

如果您不想手动创建月份列表,则可以使用Calendar API执行此操作。如果calendar.month_name[i]January会输出i=0等等......

>>> import calendar
>>> M = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
>>> mod_sums = [ (s - (s // 7) - ((s + 1) // 7)) * 8 for s in M]
>>> values = str(mod_sums[0]) + " " + ' '.join("{} = {}".format(calendar.month_name[i], v) for i,v in enumerate(mod_sums[1:],start=1))

<强>输出

>>> values
>>> '0 January = 184 February = 160 March = 184 April = 176 May = 184 June = 176 July = 184 August = 184 September = 176 October = 184 November = 176 December = 184'

答案 2 :(得分:1)

我会在Calendar API的帮助下创建一个for循环:

import calendar 

M = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

print(M[0], end=" ")  # For whatever reason you are printing this value

for i in range(1,len(M)):
    print(calendar.month_name[i],"=",(i - (i // 7) - ((i + 1) // 7)),end=" ")