Using an unpythonic loop
========================
`PEP 20 `_ states "There should be one-- and preferably only one --obvious way to do it." Creating a loop that uses an incrementing index to access each element of a list within the loop construct is not the preferred style for accessing each element in a list. The preferred style is to use ``enumerate()`` to simultaneously retrieve the index and list element.
Anti-pattern
------------
The code below uses an index variable ``i`` in a ``for`` loop to iterate through the elements of a list. This is not the preferred style for iterating through a list in Python.
.. code:: python
l = [1,2,3]
# creating index variable
for i in range(0,len(l)):
# using index to access list
le = l[i]
print(i,le)
Best practice
-------------
Retrieve index and element when defining loop
.............................................
The updated code below demonstrates the Pythonic style for iterating through a list. When you define two variables in a ``for`` loop in conjunction with a call to ``enumerate()`` on a list, Python automatically assigns the first variable as an index variable, and the second variable as the corresponding list element value for that index location in the list.
.. code:: python
for i, le in enumerate(l):
print(i, le)
References
----------
- `PEP 20 - The Zen of Python `_