Python 当此代码打印时,它有一个0。没有它我怎么能打印出来?

Python 当此代码打印时,它有一个0。没有它我怎么能打印出来?,python,Python,如何使其返回不带0的列表 import calendar for i, m in enumerate (calendar.month_name): print(i,m) 它是这样印的 0 1 January 2 February 3 March 4 April 5 May 6 June 7 July 8 August 9 September 10 October 11 November 12 December 摆脱第一行的0是我要做的。看起来他们在列表的第一个条目中使用了一个空字

如何使其返回不带0的列表

import calendar

for i, m in enumerate (calendar.month_name):
    print(i,m)
它是这样印的

0 
1 January
2 February
3 March
4 April
5 May
6 June
7 July
8 August
9 September
10 October
11 November
12 December

摆脱第一行的0是我要做的。

看起来他们在列表的第一个条目中使用了一个空字符串来保持月份与数字对齐(即:一月是数字1),因为Python开始在0处建立索引。您可以在此处查看文档:

您可以拆分列表以仅保留所需的条目:

calendar.month_name[1:]
month\u name
““helpully”用空字符串填充列表,以便列表索引与正常的基于1的月份计数相匹配。为了解决这个问题,我将对列表进行切片,并以显式的起点1枚举它

for i, m in enumerate(calendar.month_name[1:], 1):
另一个更麻烦但可能有用的方法是为列表获取一个显式迭代器并“预先推进”它

这可能比创建一个新列表更有效,但是根据您的用例,差异可能无关紧要

使用
itertools
执行类似操作:

from itertools import islice

# The explicit stop=None tells islice to go to the end of the iterable
for i, m in enumerate(islice(calendar.month_name, 1, None), 1):

问题主题说明如何在没有它的情况下打印,问题主体询问您如何返回它。你想要哪一个?将
print(i,m)
更改为
print(i+1,m)
应该访问的
enumerate
。评论员:问题的根源是,
month\u name
在序列的开头生成了一个“null”月,但问题没有弄清楚。按原样输出开始于
(0',)
,而不是
(1',一月')
。无论目标是返回列表还是输出月份,都不是真正相关的,简单地在
i
中添加1的建议也不相关。这对enumerate(calendar.month_name[1:],1]中的i,m有效:
from itertools import islice

# The explicit stop=None tells islice to go to the end of the iterable
for i, m in enumerate(islice(calendar.month_name, 1, None), 1):