小编典典

如何枚举从 1 开始的数字范围

all

我正在使用 Python 2.5,我想要一个像这样的枚举(从 1 而不是 0 开始):

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

我知道在 Python 2.6 中你可以这样做: h = enumerate(range(2000, 2005), 1) 给出上述结果,但在
python2.5 中你不能......

使用 Python 2.5:

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

有谁知道在 Python 2.5 中获得所需结果的方法?


阅读 64

收藏
2022-06-29

共1个答案

小编典典

正如您已经提到的,这在 Python 2.6 或更高版本中很简单:

enumerate(range(2000, 2005), 1)

Python 2.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来代替。

2022-06-29