如何枚举从1开始的一系列数字

2024-04-18 16:55:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是Python2.5,我想要这样的枚举(从1开始,而不是从0开始):

[(1, 2000), (2, 2001), (3, 2002), (4, 2003), (5, 2004)]

我知道在python2.6中你可以做:h=enumerate(range(2000,2005),1)来给出上面的结果,但是在python2.5中你不能。。。

使用python2.5:

>>> h = enumerate(range(2000, 2005))
>>> [x for x in h]
[(0, 2000), (1, 2001), (2, 2002), (3, 2003), (4, 2004)]

有人知道在Python2.5中获得期望结果的方法吗?

谢谢

杰夫


Tags: 方法inforrangeenumerate
3条回答

正如您已经提到的,在Python2.6或更新版本中,这很容易做到:

enumerate(range(2000, 2005), 1)

Python2.5和更早版本不支持start参数,因此可以创建两个范围对象并压缩它们:

r = xrange(2000, 2005)
r2 = xrange(1, len(r) + 1)
h = zip(r2, r)
print h

结果:

[(1, 2000), (2, 2001), (3, 2002), (4, 2003), (5, 2004)]

如果要创建生成器而不是列表,则可以使用izip

为了后代起见,在2.6中添加了“start”参数来枚举,如下所示:

enumerate(sequence, start=1)

很简单,只需定义自己的函数即可:

def enum(seq, start=0):
    for i, x in enumerate(seq):
        yield i+start, x

相关问题 更多 >