# Python Loops

> Learn how while and for loops work in Python, iterating lists or a range() of numbers, getting the index with enumerate(), and using break and continue.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2020-12-24 | Topics: [Python](https://flaviocopes.com/tags/python/) | Canonical: https://flaviocopes.com/python-loops/

Loops are one essential part of programming.

In [Python](https://flaviocopes.com/python-introduction/) we have 2 kinds of loops: **while loops** and **for loops**.

## while loops

`while` loops are defined using the `while` keyword, and they repeat their block until the condition is evaluated as `False`:

```python
condition = True
while condition == True:
    print("The condition is True")
```

This is an **infinite loop**. It never ends.

Let's halt the loop right after the first iteration:

```python
condition = True
while condition == True:
    print("The condition is True")
    condition = False

print("After the loop")
```

In this case, the first iteration is ran, as the condition test is evaluated to `True`, and at the second iteration the condition test evaluates to `False`, so the control goes to the next instruction, after the loop.

It's common to have a counter to stop the iteration after some number of cycles:

```python
count = 0
while count < 10:
    print("The condition is True")
    count = count + 1

print("After the loop")
```

## for loops

Using `for` loops we can tell Python to execute a block for a pre-determined amount of times, up front, and without the need of a separate variable and conditional to check its value.

For example we can iterate the items in a list:

```python
items = [1, 2, 3, 4]
for item in items:
    print(item)
```

Or, you can iterate a specific amount of times using the `range()` function:

```python
for item in range(04):
    print(item)
```

`range(4)` creates a sequence that starts from 0 and contains 4 items: `[0, 1, 2, 3]`.

To get the index, you should wrap the sequence into the `enumerate()` function:

```python
items = [1, 2, 3, 4]
for index, item in enumerate(items):
    print(index, item)
```

## Break and continue

Both `while` and `for` loops can be interrupted inside the block, using two special keywords: `break` and `continue`.

`continue` stops the current iteration and tells Python to execute the next one.

`break` stops the loop altogether, and goes on with the next instruction after the loop end.

The first example here prints `1, 3, 4`. The second example prints `1`:

```python
items = [1, 2, 3, 4]
for item in items:
    if item == 2:
        continue
    print(item)
```

```python
items = [1, 2, 3, 4]
for item in items:
    if item == 2:
        break
    print(item)
```
