🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Python `for`循环 > 原文: [https://www.programiz.com/python-programming/for-loop](https://www.programiz.com/python-programming/for-loop) #### 在本文中,您将学习使用`for`循环的不同变体对元素序列进行迭代。 ## 什么是 Python 中的`for`循环? Python 中的`for`循环用于迭代序列([列表](https://www.programiz.com/python-programming/list),[元组](https://www.programiz.com/python-programming/tuple),[字符串](https://www.programiz.com/python-programming/string))或其他可迭代对象。 在序列上进行迭代称为遍历。 ### `for`循环的语法 ```py for val in sequence: Body of for ``` 在这里,`val`是在每次迭代中获取序列内项目值的变量。 循环继续,直到我们到达序列中的最后一项。 `for`循环的主体使用缩进与其余代码分开。 ### `for`循环流程图 ![Flowchart of for Loop in Python programming](https://img.kancloud.cn/af/d3/afd3443cc2fbab478b3e94aa7116ae34_219x384.png "for Loop Flowchart") Python 中`for`循环的流程图 ### 示例:Python `for`循环 ```py # Program to find the sum of all numbers stored in a list # List of numbers numbers = [6, 5, 3, 8, 4, 2, 5, 4, 11] # variable to store the sum sum = 0 # iterate over the list for val in numbers: sum = sum+val print("The sum is", sum) ``` 运行该程序时,输出为: ```py The sum is 48 ``` * * * ## `range()`函数 我们可以使用`range()`函数生成数字序列。`range(10)`将生成 0 到 9 之间的数字(10 个数字)。 我们还可以将开始,停止和步长定义为`range(start, stop,step_size)`。 如果未提供,则`step_size`默认为 1。 从某种意义上讲,`range`对象是“惰性”的,因为在创建它时,它不会生成它“包含”的每个数字。 但是,它不是迭代器,因为它支持`in`,`len`和`__getitem__`操作。 此函数不会将所有值存储在内存中; 这将是低效的。 因此它会记住开始,停止,步长并在旅途中生成下一个数字。 要强制此函数输出所有项目,我们可以使用函数`list()`。 以下示例将阐明这一点。 ```py print(range(10)) print(list(range(10))) print(list(range(2, 8))) print(list(range(2, 20, 3))) ``` **输出** ```py range(0, 10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [2, 3, 4, 5, 6, 7] [2, 5, 8, 11, 14, 17] ``` 我们可以在`for`循环中使用`range()`函数来迭代数字序列。 它可以与`len()`函数结合使用索引来遍历序列。 这是一个例子。 ```py # Program to iterate through a list using indexing genre = ['pop', 'rock', 'jazz'] # iterate over the list using index for i in range(len(genre)): print("I like", genre[i]) ``` **输出**: ```py I like pop I like rock ​I like jazz ``` * * * ## 循环与`else` `for`循环也可以具有可选的`else`块。 如果`for`循环的序列中的项目用尽,则会执行`else`部分。 `break`关键字可用于停止`for`循环。 在这种情况下,其他部分将被忽略。 因此,如果没有中断发生,则`for`循环的`else`部分将运行。 这是一个例子来说明这一点。 ```py digits = [0, 1, 5] for i in digits: print(i) else: print("No items left.") ``` 当你运行程序时,输出将是: ```py 0 1 5 No items left. ``` 在这里,`for`循环打印列表中的项目,直到循环用尽。 当`for`循环用完时,它将执行`else`中的代码块并打印。 仅当未执行`break`关键字时,此`for...else`语句才能与`break`关键字一起使用以运行`else`块。 让我们举个例子: ```py # program to display student's marks from record student_name = 'Soyuj' marks = {'James': 90, 'Jules': 55, 'Arthur': 77} for student in marks: if student == student_name: print(marks[student]) break else: print('No entry with that name found.') ``` **输出**: ```py No entry with that name found. ```