# Python `for`循环

> 原文： [http://zetcode.com/python/forloop/](http://zetcode.com/python/forloop/)

Python `for`循环教程展示了如何使用`for`语句在 Python 中创建循环。

## Python 循环定义

循环是连续重复的指令序列，直到达到特定条件为止。 例如，我们有一个项目集合，我们创建了一个循环以遍历该集合的所有元素。 可以使用`for`或`while`语句创建 Python 中的循环。

## Python 语句

Python `for`语句按照它们在序列中出现的顺序遍历任何序列的项（例如列表或字符串）。

```py
for var in sequence:
   do_statement(s)

```

上面是 Python `for`语句的一般语法。

## Python 的字符串循环

以下示例使用 Python `for`语句遍历字符串。

`for_loop_string.py`

```py
#!/usr/bin/python3

word = "cloud"

for let in word:

    print(let)

```

我们定义了一个字符串。 通过`for`循环，我们将单词的字母一一打印到终端。

```py
$ ./for_loop_string.py 
c
l
o
u
d

```

这是示例的输出。

## Python `for`循环的`else`

`for`循环具有可选的`else`语句，该语句在循环完成时执行。

`for_loop_else.py`

```py
#!/usr/bin/python3

words = ["cup", "star", "monkey", "bottle", "paper", "door"]

for word in words:

    print(word)
else:

    print("Finished looping")    

```

我们使用`for`循环遍历单词列表。 迭代结束后，我们将打印`"Finished looping"`消息，该消息位于`else`关键字之后的主体中。

```py
$ ./for_loop_else.py 
cup
star
monkey
bottle
paper
door
Finished looping

```

这是示例的输出。

## Python 的范围循环

Python `range()`函数生成一个数字列表。

```py
range(n)

```

该函数生成数字`0 ... n-1`。

```py
range(start, stop, [step])

```

该函数生成一个数字序列； 它以`start`开头，以`stop`结束，该序列中未包含该字符。 `step`是增量，如果未提供，则默认为 1。

借助`range()`函数，我们可以将代码块重复 n 次。

`repeating_statement.py`

```py
#!/usr/bin/python3

for i in range(1, 6):

    print("Statement executed {0}".format(i))

```

该代码示例执行该代码块五次。

```py
$ ./repeating_statement.py 
Statement executed 1
Statement executed 2
Statement executed 3
Statement executed 4
Statement executed 5

```

这是输出。

在下一个示例中，我们使用`for`循环生成两个整数序列。

`for_loop_range.py`

```py
#!/usr/bin/python3

for n in range(1, 11):

    print(n, end=' ')

print()    

for n in range(0, 11, 2):

    print(n, end=' ')    

print()  

```

该示例打印两个整数序列：1，2，... 10 和 0，2，... 10。

```py
$ ./for_loop_range.py 
1 2 3 4 5 6 7 8 9 10 
0 2 4 6 8 10 

```

这是输出。

## Python 遍历元组和列表

使用 Python `for`循环，我们可以轻松地遍历 Python 元组和列表。

`for_loop_tuple_list.py`

```py
#!/usr/bin/python3

nums = (1, 2, 3, 4, 5, 6)   
words = ["cup", "star", "monkey", "bottle"]

for n in nums:

    print(n, end=' ')

print()

for word in words:

    print(word, end=' ')

print()    

```

该代码示例输出一个元组和一个列表的元素。

```py
$ ./for_loop_tuple_list.py 
1 2 3 4 5 6 
cup star monkey bottle 

```

这是输出。

## Python 索引循环

有时我们也需要获取元素的索引。 为此，我们可以使用`enumerate()`函数。

`for_loop_index.py`

```py
#!/usr/bin/python3

words = ("cup", "star", "monkey", "bottle", "paper", "door")

for idx, word in enumerate(words):

    print("{0}: {1}".format(idx, word))

```

借助`enumerate()`函数，我们将打印列表元素及其索引。

```py
$ ./for_loop_index.py 
0: cup
1: star
2: monkey
3: bottle
4: paper
5: door

```

## Python 遍历字典

在以下示例中，我们遍历了 Python 字典。

`for_loop_dictionary.py`

```py
#!/usr/bin/python3

data = { "de": "Germany", "sk": "Slovakia", "hu": "Hungary", "ru": "Russia" }    

for k, v in data.items():

    print("{0} is an abbreviation for {1}".format(k, v))

```

该代码示例将打印 Python 字典的键和值。

```py
$ ./for_loop_dictionary.py 
sk is an abbreviation for Slovakia
ru is an abbreviation for Russia
hu is an abbreviation for Hungary
de is an abbreviation for Germany

```

这是输出。

## Python 嵌套循环

可以将`for`循环嵌套到另一个循环中。

`for_loop_nested.py`

```py
#!/usr/bin/python3

nums = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

for i in nums:

    for e in i:

        print(e, end=' ')

    print()

```

我们有一个二维整数列表。 我们通过两个`for`循环遍历元素。

```py
$ ./for_loop_nested.py 
1 2 3 
4 5 6 
7 8 9 

```

这是输出。

## Python `for`循环的`zip`

`zip()`函数根据给定的可迭代对象创建一个迭代器。

`for_loop_zip.py`

```py
#!/usr/bin/python3

words1 = ["cup", "bottle", "table", "rock", "apple"]
words2 = ["trousers", "nail", "head", "water", "pen"]

for w1, w2 in zip(words1, words2):

    print(w1, w2)

```

在示例中，我们在一个`for`循环中迭代两个列表。

```py
$ ./for_loop_zip.py 
cup trousers
bottle nail
table head
rock water
apple pen

```

这是输出。

## Python 循环自定义可迭代对象

在下一个示例中，我们遍历了一个自定义迭代器。

`for_loop_custom_iterable.py`

```py
#!/usr/bin/python3

import random

def myrandom(x):

    i = 0

    while i < x:

        r = random.randint(0, 100)

        yield r

        i = i + 1

for r in myrandom(5):

    print(r)

```

该代码示例创建一个生成器函数，该函数生成随机整数。 通过`for`循环，我们生成五个随机整数。

```py
$ ./for_loop_custom_iterable.py 
14
43
53
44
70

```

这是一个示例输出。

## Python `for`循环`break`

`break`语句终止`for`循环。

`for_loop_break.py`

```py
#!/usr/bin/python3

import random
import itertools 

for i in itertools.count():

   val = random.randint(1, 30)
   print(val)

   if (val == 22):
      break

```

在示例中，我们创建了一个无限的`for`循环。 我们从`1 ... 29`生成并打印随机数。 如果生成的数字等于 22，则`for`循环以`break`关键字结束。

```py
$ ./for_loop_break.py 
7
27
2
27
7
9
3
25
15
22

```

这是一个示例输出。

## Python 循环`continue`

`continue`关键字用于中断当前循环，而不会跳出整个循环。 它启动一个新的循环。

`for_loop_continue.py`

```py
#!/usr/bin/python3

num = 0

for num in range(1000):

   num = num + 1

   if (num % 2) == 0:
      continue

   print(num, end=' ')

print() 

```

我们打印所有小于 1000 的数字，这些数字不能除以 2 而没有余数。

在本教程中，我们使用 Python 进行循环。

您可能也对以下相关教程感兴趣： [Python 教程](/lang/python/)， [Python 集教程](/python/set/)， [Python lambda 函数](/python/lambda/)， [Python 列表推导](/articles/pythonlistcomprehensions/)， [Python 映射教程](/python/map/)， [Python 反向教程](/python/reverse/)， [OpenPyXL 教程](/articles/openpyxl/)， [Python Requests 教程](/web/pythonrequests/)和 [Python CSV 教程](/python/csv/)。