for in在python中什么意思_Python for 循环中 in 关键字含义是什么?
最常用的情况下,我理解,比如
for i in range(1, 5):
print i
回复内容:
关键词:迭代器
简单来说,for in 语句是一个语法糖,具体是这样的:
调用一个对象的 __iter__ 方法,方法会返回一个迭代器,所谓迭代器就是实现了 __next__ 方法的对象,如果一个对象本身就实现了 __next__(Python 2 中是直接 “next” 方法,没有下划线) ,可以直接返回自身。
调用迭代器的 __next__ 返回迭代器中的“下一个”元素,比如说第一次调用会返回 0,第二次会返回 1,如此这般。
最后没有元素了,迭代器抛出一个异常来表明自己没有元素了。for 语句会捕获这个异常并停下来。我建议你独立写一个斐波那契的迭代器。
Mac 怎么让截图变正常大小啊 QAQ
另外,还有一个销魂的东西叫做生成器,演示一下如何优雅地斐波那契:
(此后的代码为了简洁我都用 Python 3 来写,用 Python 2 能运行但是性能糟糕。)
def fib(n):
a = 0
b = 1
for _ in range(n):
a, b = b, a+b
yield a
谢邀。刚看到问题以为楼主要问in是什么意思。
这个for实际上就是迭代,使用的是迭代器(Iterator)。
# 以下代码在Python 2中运行
for row in f:
print row
# 完全等价于
itr = f.__iter__() # 获得新的迭代器
while True:
try:
row = itr.next()
except StopIteration:
break
print row
迭代器。
将
用dis转成虚拟机的指令
发现就是GET_ITER, FOR_ITER之类
这都是把range(1:5)和f当成容器来看。文件f既然有行,那row自然是字符串了。
就个人理解:
in关键字实现了一套python中的遍历协议.
协议A: __iter__ + next循环时, 程序先使用__iter__ (相当于iter(instance))获取具有next方法的对象, 然后通过其返回的对象, 不断调用其next方法, 直到StopIteration错误抛出.
class A:
def __iter__(self):
self.limit = 4
self.times = 0
self.init = 1
return self
def next(self):
if self.times >= self.limit:
raise StopIteration()
else:
x = self.init
self.times += 1
self.init += 1
return x
print 'A>>>>>>'
for x in A():
print x
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
相关文章
相关视频
网友评论
文明上网理性发言,请遵守 新闻评论服务协议我要评论
立即提交
专题推荐独孤九贱-php全栈开发教程
全栈 100W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
玉女心经-web前端开发教程
入门 50W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
天龙八部-实战开发教程
实战 80W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习
for in在python中什么意思_Python for 循环中 in 关键字含义是什么?相关推荐
- python中x[:],x[:-1],x[:,]x[:,-1]等操作含义解析
** python中x[:],x[:-1],x[:,]x[:,-1]等操作含义解析 ** 一维数组操作: 例:x = [1, 2, 3, 4, 5, 6] 打印全部数组: x[:] 冒号左侧表示开始位 ...
- python中定义数据结构_Python中的数据结构—简介
python中定义数据结构 You have multiples algorithms, the steps of which require fetching the smallest value ...
- python中列表常用方法_Python中列表的常用方法
给列表添加元素 append方法 在列表最后追加元素 l1 = ['a', 'b', 'c', 'd', ] l1.append('e')print(l1)print(l1.append('e'))# ...
- python中pop函数_Python中的Pop函数
python中pop函数 什么是弹出功能? (What is the pop function?) The method pop() removes and returns the last elem ...
- python中mod运算符_Python中的数学运算操作符使用进阶
Python中对象的行为是由它的类型 (Type) 决定的.所谓类型就是支持某些特定的操作.数字对象在任何编程语言中都是基础元素,支持加.减.乘.除等数学操作. Python的数字对象有整数和浮点数, ...
- python中while嵌套循环_python中的while循环
循环 目标 程序的三大流程 while 循环基本使用 break 和 continue while 循环嵌套 01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 -- 从上向下,顺 ...
- python中module用法_Python学习之module用法
Python学习之module用法 Python学习之module用法 为什么80%的码农都做不了架构师?>>> Python has a way to put definition ...
- elif在python中啥意思_python中elif 结构语句怎么判断?
if语句最基本的知识,相信小伙伴们已经学会了.有的小伙伴想挑战更高阶的使用,小编就考考大家,elif是什么呢?知道答案的小伙伴又会使用elif吗?当然,在if的基础上扩展,elif肯定是稍微难一点的. ...
- python中实例方法分类_python方法的分类(实例方法、类方法、静态方法)
方法和函数的区分 很多童鞋会比较疑惑,方法和函数有什么区别,都是通过def去定义的啊? 只需要记住一点,方法是用来描述一个目标的行为动作! 不论你是直接通过 类名.方法调用,还是通过由类生成的实例.方 ...
- python中sys用法_python中os和sys模块的区别与常用方法总结
python 的 python中os和sys模块的区别与常用方法总结 前言 本文主要介绍了关于python中os和sys模块区别与常用方法的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看 ...
最新文章
- 一文尽览5G全产业链及新机遇
- 推荐10款纯css3实现的实用按钮
- 命令行运行vbs脚本并传参数给vbs中的变量简单示例
- python globle用法
- 心电图 python_能测血压,还有心电图,兼顾9大运动模式,dido手环还不错
- 计算机主板详细维修,教你电脑主板维修必备基础知识
- [贪心][区间dp]Zero-One Codeforces1733D1D2
- LMS自适应滤波的MATLAB实现——实例仿真
- cobar_note
- 徐思201771010132 《面向对象程序设计(java)》课程学习总结
- oracle11g oem使用手册,Oracle11g从入门到精通pdf
- 提到单片机很多人都很觉得不陌生,大街小巷上面电子产品都用到
- java通过LocalDateTime获取上周几
- php 读取docx,PHP怎么获取docx里面内容
- 计算机专业是不是天坑专业,工科中的三大“天坑”专业,就业前景不太乐观,入坑需谨慎!...
- flea-cache使用之Redis集群模式接入
- 【JAVA】关于自动化测试所需要学习的java基础知识笔记
- 嵌入式linux系统应用开发
- 自定义实现微信通讯录效果View
- arcgis制作瓦片地图_一种GIS瓦片地图的存储方式的制作方法
热门文章
- Axure8超详细使用教程(含安装包)
- sql中如何按拼音笔画排序
- 层叠上下文(stacking context)
- linux挂载VMFS硬盘,挂载ESXi服务器VMFS存储卷
- Eclipse没有Dynamic Web Project选项解决
- 论码流、码率、采样率、比特率、帧速率、分辨率、高清视频的概念
- LoRa和NB-IoT会长期共存吗?
- JSHOP2学习1:环境配置(超详细教程)
- dataset中shuffle()、repeat()、batch()用法
- 【错误记录】Kotlin 报错 ( Some kotlin libraries attached to this project were compiled with a newer kotlin )