python中for循环的底层实现机制 迭代

在python中,存在2种循环方式:for循环和while循环。

while循环的实现很简单, 其本质就是一个条件语句,自定义条件,当条件满足的时候,不断执行while代码块。

但是for循环,究竟是怎么回事呢?说到for循环,那么就不能不讲到迭代了

迭代
    python中迭代对象分2种:迭代器对象(Iterator)、可迭代对象(Iterable)。

tips:如何判断一个对象是迭代器对象还是可迭代对象?

 from collections import Iterable, Iterator
    isinstance(object, class),第一个参数为对象,第二个参数为类名;返回值为True,即对象为

1.可迭代对象

很多python的数据类型都是可迭代对象:列表、字典、元组、字符串等

1 a = [1, 2, 3]
2 isinstance(a, Iterable) # True
3 注意:可迭代对象,并不是迭代器对象

2.迭代器对象

迭代器对象依赖iter(args)方法来实现,参数args必须是一个可迭代对象

1 a = [1, 2, 3]
2 b = iter(a)
3 isinstance(b, Iterator) # True
4 isinstance(b, Iterable) # True

由此可以看出,迭代器对象,同时也是可迭代对象

那么,这2个对象,到底和for循环的关系在哪里呢?

for循环
    我们都知道,迭代器对象,实现了__next__()方法,可以不断调用该方法,返回迭代器对象的每个元素

for循环的对象,必须是可迭代对象。而在底层,所有的可迭代对象均内置了__iter__()方法,返回值为迭代器对象

此时,我们便明了了,for循环本质上调用了可迭代对象的__iter__()方法,得到了该对象对应的迭代器对象,然后无限调用__next__()方法,得到对象中的每一个元素。直到StopIteration异常,代表迭代器中已无下一个元素,for循环自动处理该异常,跳出循环。

原文地址:https://www.cnblogs.com/kevincaptain/p/10439159.html

时间: 2024-10-28 15:31:02

python中for循环的底层实现机制 迭代的相关文章

Python中的循环技术

简单谈谈 Python 中容器的遍历和一下小技巧. 1.遍历单个容器 下面代码遍历一个 List 结构,同样适用于 Tuple.Set 结构类型 >>> x = [1, 2, 3, 'p' , 'y'] >>> for v in x: ... print(x) ... 1 2 3 p y 遍历字典 Dict 结构也是一样的方法,注意区分 Key-Value >>> y = {'a':11, 'b':22} >>> y {'b': 22

Java和Python中for循环的比较

Java是强类型的语言,而python是弱类型的语言.先看Java中的for循环使用,如下图: package test06; /* * for 循环的条件 * for (循环初始表达式:循环条件表达式:循环后的表达式) */ public class Fortest { public static void main(String[] args){ /*打印九九乘法表*/ for(int x=1;x<10;x+=1){ for (int y=1;y<=x;y+=1){ if(y<x){

python中的循环和编码

1.while循环 现在让我们来看看python中的while循环  格式为 while 条件 循环体 (break) (continue) 中断循环的关键字有break和continue, break: 直接中断跳出循环. continue:终止当前本次循环,继续执行下一次循环,不会彻底中断循环 2.格式化输出 占位符有%s,%d name = input("请输入你的名字") sex = input("请输入你的性别") age = input("请输

Python中的循环语句

Python中有while循环和for循环 下面以一个小例子来说明一下用法,用户输入一些数字,输出这些数字中的最大值和最小值 1 array = [5,4,3,1] 2 3 for i in array: 4 print(i) 5 6 largest = None 7 smallest = None 8 while True: 9 num = input("Enter a number: ") 10 if num == "done" : break if len(n

Python中的循环结构

Python中的比较运算符: Python中的关系运算符: 循环是为了解决重复出现的问题而设计. 1. for 实现 1+..+100求和 1 sum=0 2 for i in range(1,101): #range(start,stop,step) 3 sum+=i 2. while 1 i=1 2 sum=0 3 while i<101: 4 sum+=i 5 i+=1 注意: 在Python没有++ 和 -- 运算符 循环语句与判断条件语句结合使用时,注意break跳出所在最小循环,而c

python 中 for 循环 if循环 break

python中最基本的语法格式大概就是缩进了.python中常用的循环:for循环,if循环.一个小游戏说明for,if ,break的用法. 猜数字游戏: 1.系统生成一个20以内的随机数 2.玩家有6次机会进行猜猜看,每次猜测都会有反馈结果,猜大了,猜小了或是猜对了--结束 3.6次机会中,猜对了,玩家赢 4,6次机会中,没猜对,系统赢. 代码如下: [[email protected] python-scripts]# cat 12.py #!/usr/bin/python#coding=

22:python中的循环控制语句

循环控制语句可以更改语句执行的顺序.Python支持以下循环控制语句: 控制语句 描述 break 语句 在语句块执行过程中终止循环,并且跳出整个循环 continue 语句 在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环. pass 语句 pass是空语句,是为了保持程序结构的完整性. 22.1 break语句 Pythonbreak语句,就像在C语言中,打破了最小封闭for或while循环. break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,

一文了解Python中的循环(for while break continue 嵌套循环...)

循环 目标 程序的三大流程 while 循环基本使用 break 和 continue while 循环嵌套 01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 —— 从上向下,顺序执行代码 分支 —— 根据条件判断,决定执行代码的 分支 循环 —— 让 特定代码 重复 执行 02. while 循环基本使用 循环的作用就是让 指定的代码 重复的执行 while 循环最常用的应用场景就是 让执行的代码 按照 指定的次数 重复 执行 需求 —— 打印 5 遍 Hello Python

Python中的循环

# 循环 # Python的循环有两种,一种是for...in循环,一种是while循环 # for...in循环 print('for...in循环') print('#1 依次把list或tuple中的每个元素迭代出来') names = ['Micheal', 'Bob', 'Tracy'] for name in names:     print(name) print('#2 计算1-10的整数之和') s = 0 for x in [1, 2, 3, 4, 5, 6, 7, 8, 9