As you already mentioned, this is straightforward to do in Python 2.6 or newer:

enumerate(range(2000, 2005), 1)

Python 2.5 and older do not support the start parameter so instead you could create two range objects and zip them:

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

Result:

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

If you want to create a generator instead of a list then you can use izip instead.

Answer from Mark Byers on Stack Overflow
🌐
GeeksforGeeks
geeksforgeeks.org › python › how-to-start-enumerate-from-1-in-python
How to start enumerate from 1 in Python ? - GeeksforGeeks
July 23, 2025 - Using enumerate(start=1) is most recommended methods to start index from 1. Set the start parameter to 1 is particularly useful when presenting lists in a more easy format or following specific indexing requirements.
Discussions

how to make enumerate start from 1 while using zip function ?
It's because you are using the same names for your list as the items in the list. So after testing the first approach, a and b now refer to ints, not the original lists. More on reddit.com
🌐 r/learnpython
9
0
June 21, 2022
for loop - Python -- how to force enumerate to start at 1 -- or workaround? - Stack Overflow
but of course that doesn't work ... I get 1, 1, 2, 3, 4, etc and that won't work because I'll get 4 nodes before I hit a index % 3 == 0. Any suggestions on how to do this? This isn't a big enumerate, usually only about 10-15 items. Thanks. ... Read. The. Documentation. pydoc enumerate is less effort than asking here... ... Save this answer. ... Show activity on this post. Since Python 2.6, enumerate() takes an optional start parameter ... More on stackoverflow.com
🌐 stackoverflow.com
Have I found my first bug? (for loop with enumerate function)
Enumerate function will always start from the first element. By specifying “start = 1” you just change the starting point of the counter. You are probably confused because you named the variable “index”. There is no actual connection between the index variable and your list, it’s just a counter. You could specify “start = 1000” and it would still work. More on reddit.com
🌐 r/inventwithpython
4
0
May 3, 2020
[deleted by user]
Thanks for the tutorial! More on reddit.com
🌐 r/learnpython
26
171
March 2, 2022
🌐
Note.nkmk.me
note.nkmk.me › home › python
How to Start enumerate() at 1 in Python | note.nkmk.me
May 6, 2023 - For example, this approach is useful when generating sequential number strings beginning from 1. Passing the starting number as the second argument to enumerate() is more efficient than calculating i + 1. for i, name in enumerate(l, 1): ...
🌐
Python Examples
pythonexamples.org › python-enumerate-start-at-1
enumerate() start at 1
In Python, enumerate() takes an iterable and an optional start, as arguments. The value provided to start parameter acts as a starting point for the counter. To enumerate with a start of 1, pass start=1 to enumerate() function.
🌐
Real Python
realpython.com › python-enumerate
Python enumerate(): Simplify Loops That Need Counters – Real Python
October 21, 2025 - In this example, you pass start=1, which initializes position with the value 1 on the first loop iteration. You should use enumerate() anytime you need to use the count and an item in a loop.
🌐
Reddit
reddit.com › r/learnpython › how to make enumerate start from 1 while using zip function ?
r/learnpython on Reddit: how to make enumerate start from 1 while using zip function ?
June 21, 2022 -

Hi so i have these two lists

a = [1.2.3.4]

b= [5,6,7,8]

MY code:

for i,(a,b) in enumerate(zip(a,b)):

 print(i,a,b)

I get following output

(0, 1, 5)
(1, 2, 6)
(2, 3, 7)
(3, 4, 8)

But i want to start it from 1. i did the following but get the error

for i,(a,b) in enumerate(zip(a,b),start=1):
 print(i,a,b)

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: 'int' object is not iterable

Please Help,Thanks

🌐
Analytics Vidhya
analyticsvidhya.com › home › python enumerate(): simplify looping with counters
Python enumerate(): Simplify Looping With Counters | Analytics Vidhya
July 12, 2024 - The above example uses a for loop. We tell enumerate() to start the counter at 1 rather than the default 0 by passing start=1 as an argument.
Find elsewhere
🌐
Great Learning
mygreatlearning.com › blog › it/software development › python enumerate(): simplify looping with counters
Python enumerate(): Simplify Looping With Counters
January 6, 2025 - A: You can start enumerate at a different number by passing a value for the "start" parameter. For example, if you want to start at 1 instead of 0, you can use enumerate(iterable, start=1).
🌐
Afternerd
afternerd.com › blog › python-enumerate
Python Enumerate Explained (With Examples) - Afternerd
August 20, 2019 - For example, let’s say we want to enumerate over a list starting at 1. ... L = ['apples', 'bananas', 'oranges'] for idx, s in enumerate(L, start = 1): print("index is %d and value is %s" \ % (idx, s))
🌐
Pythonhumanities
intermediate-python.pythonhumanities.com › notebooks › 01-enumerate.html
The Enumerate Function — Intermediate Python for Humanists
By default, the enumerate() function starts the index at 0. However, you can change the starting index by providing a value for the start parameter. ... As you can see, the index now starts at 1 instead of 0.
🌐
IONOS
ionos.com › digital guide › websites › web development › python enumerate
How to use Python enumerate() to number and output objects - IONOS
June 18, 2025 - colors = ['Blue', 'Red', 'Yellow', ... enu­mer­a­tion starts at “0”. To change this, we add the parameter “start” with the value “1” to Python enumerate()....
🌐
Mimo
mimo.org › glossary › python › enumerate-function
Python enumerate Function: Master Index-Based Iteration
The 'enumerate()' function returns an enumerate object, which can be converted into a list, tuple, or other collection types. ... fruits = ['apple', 'banana', 'cherry'] for index, fruit in enumerate(fruits, start=1): print(index, fruit) # Outputs: # 1 apple # 2 banana # 3 cherry
🌐
Python Examples
pythonexamples.org › python-enumerate-with-different-start
Enumerate with different Start in Python
Python - Enumerate start at 1 · Python - enumerate() builtin function · In enumerate() builtin function, the default value for start parameter is zero. We can override this behavior by setting a specific value for start parameter. This lets us enumerate a given iterable with a different starting ...
🌐
Reddit
reddit.com › r/inventwithpython › have i found my first bug? (for loop with enumerate function)
r/inventwithpython on Reddit: Have I found my first bug? (for loop with enumerate function)
May 3, 2020 -

Hiya.

I'm using Python 3.8 64-bit on Win10, coding in Mu, and have been driven up the wall trying to code something simple for Al's Coin Toss challenge at the end of chapter 4.

So I was taking it line at a time, printing results to see where my error was. Here's an example of one of the loops I used to test:

letters = 'abcdefghijklmnopqrstuvwxyz'
experiment = list(letters)
for index, item in enumerate(experiment):
    previousItem = experiment[index - 1]
    nextItem = experiment[index+1]
    print(index)
    print(item)
    print(previousItem)    
    print(nextItem)

The first two iterations print:

0

a

z

b

1

b

a

c

which is what I would have expected.

However, when I try to start the loop from index 1 like so:

letters = 'abcdefghijklmnopqrstuvwxyz'
experiment = list(letters)
for index, item in enumerate(experiment, start = 1):
    previousItem = experiment[index - 1]
    nextItem = experiment[index+1]
    print(index)
    print(item)
    print(previousItem)    
    print(nextItem)

The result is:

1

a

a

c

2

b

b

d

So even though index is correctly starting at 1, the item given is still experiment[0], not experiment[1]. I tried this with enumerate(... start=2) but again, item == 'a' (== experiment[0]) not the item at the correct index.

If I replace print(item) with print(experiment[index]) I get the correct result, but why is it that the item in the iteration doesn't match the index? Isn't that the whole point of the enumerate function? or have I missed something?

Looking forward to a response! This problem has been confusing me for days now before I located it!

duck

🌐
OpenPython
openpython.org › home › articles › python enumerate with a custom start index: using the start parameter
Python enumerate with a Custom Start Index: Using the start Parameter | OpenPython
1 day ago - Many Python APIs use start to mean an input position or boundary, and range(start, stop) does skip lower values. Developers transfer that expectation to enumerate() and assume start=3 means “begin at item index three.” It does not. Use slicing, islice(), filtering, or break to control selection. # Redundant — use start=1 instead for i, item in enumerate(items): display_num = i + 1 print(f"{display_num}. {item}") # Clean for i, item in enumerate(items, start=1): print(f"{i}. {item}")
🌐
GeeksforGeeks
geeksforgeeks.org › enumerate-in-python
Enumerate() in Python - GeeksforGeeks
By using enumrate() starts indexing from 0, we can customize this using the start parameter. if want the index to begin at value other than 0. Python · a = ["geeks", "for", "geeks"] #Looping through the list using enumerate # starting the index ...
Published: January 20, 2025
🌐
Programiz
programiz.com › python-programming › methods › built-in › enumerate
Python enumerate()
If start is omitted, 0 is taken as start. The enumerate() function adds a counter to an iterable and returns it. The returned object is an enumerate object. An enumerate object is an iterator that produces a sequence of tuples, each containing an index and the value from the iterable.
🌐
Zero To Mastery
zerotomastery.io › blog › enumerate-in-python
Beginner’s Guide to enumerate() in Python | Zero To Mastery
July 3, 2025 - By default, enumerate() starts counting from 0, which makes sense if you’ve been coding for a while. The problem of course is that the average user on the street is going to assume that lists start at 1.
🌐
Carmatec
carmatec.com › home › what is the python enumerate() function? beginner’s guide
What Is the Python Enumerate() Function? Beginner’s Guide 2026
December 17, 2025 - The key improvement is the tuple ... of the most common reasons to use the start parameter is to create human-readable numbered lists that begin at 1 instead of 0:...