ZetCode

Python for 循环

最后修改于 2024 年 1 月 29 日

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

Python 循环定义

一个 循环 是一个指令序列,它会不断重复执行,直到达到某个特定条件。例如,我们有一个项目集合,并且我们创建一个循环来遍历集合中的所有元素。Python 中的循环可以使用 forwhile 语句来创建。

Python for 语句

Python for 语句会按顺序迭代任何序列(例如列表或字符串)中的元素。

for var in sequence:
   do_statement(s)

上面是 Python for 语句的通用语法。

Python for 循环与字符串

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

for_loop_string.py
#!/usr/bin/python

word = "cloud"

for let in word:
    
    print(let)

我们定义了一个字符串。使用 for 循环,我们逐个将单词的字母打印到终端。

$ ./for_loop_string.py 
c
l
o
u
d

Python for 循环 else

for 循环有一个可选的 else 语句,在循环完成后执行。

for_loop_else.py
#!/usr/bin/python

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

for word in words:
    
    print(word)
else:

    print("Finished looping")    

我们使用 for 循环遍历单词列表。当迭代结束时,我们打印位于 else 关键字后面的消息“Finished looping”。

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

Python for 循环与 range

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

range(n)

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

range(start, stop, [step])

该函数生成一个数字序列;它以 start 开始,以 stop 结束,但不包含 stopstep 是增量,如果未提供,则默认为 1。

借助 range 函数,我们可以将代码块重复执行 n 次。

repeating_statement.py
#!/usr/bin/python

for i in range(1, 6):
    
    print(f"Statement executed {i}")

代码示例将代码块执行了五次。

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

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

for_loop_range.py
#!/usr/bin/python

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。

$ ./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
#!/usr/bin/python

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()    

代码示例打印元组和列表的元素。

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

Python 循环带索引

有时我们需要获取元素的索引;为此,我们可以使用 enumerate 函数。

for_loop_index.py
#!/usr/bin/python

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

for idx, word in enumerate(words):
    
    print(f"{idx}: {word}")

借助 enumerate 函数,我们打印列表中的元素及其索引。

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

Python 循环遍历字典

在下面的示例中,我们遍历 Python 字典。

for_loop_dictionary.py
#!/usr/bin/python

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

for k, v in data.items():
    
    print(f"{k} is an abbreviation for {v}")

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

$ ./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 循环嵌套到另一个循环中。

for_loop_nested.py
#!/usr/bin/python

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

for i in nums:
    
    for e in i:
        
        print(e, end=' ')
    
    print()

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

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

Python for 循环与 zip

zip 函数从给定的可迭代对象创建迭代器。

for_loop_zip.py
#!/usr/bin/python

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

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

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

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

Python 循环自定义可迭代对象

在下一个示例中,我们遍历自定义的可迭代对象。

for_loop_custom_iterable.py
#!/usr/bin/python

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 循环,我们生成了五个随机整数。

$ ./for_loop_custom_iterable.py 
14
43
53
44
70

Python for 循环与 break

break 语句终止 for 循环。

for_loop_break.py
#!/usr/bin/python

import random
import itertools 

for i in itertools.count():
    
   val = random.randint(1, 30)
   print(val)

   if val == 22:
      break

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

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

Python for 循环与 continue

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

for_loop_continue.py
#!/usr/bin/python

num = 0

for num in range(1000):
    
   num = num + 1
   
   if num % 2 == 0:
      continue
      
   print(num, end=' ')
   
print() 

我们打印所有小于 1000 且不能被 2 整除(余数为 0)的数字。

来源

Python 语言参考

在本文中,我们研究了 Python for 循环。

作者

我叫 Jan Bodnar,是一名充满热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。到目前为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出所有 Python 教程