鱼C论坛

 找回密码
 立即注册
查看: 7625|回复: 10

python中,for-in与in背后的运作原理分别是什么

[复制链接]
发表于 2015-10-13 14:12:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 触摸纯白 于 2015-10-13 23:26 编辑

例如,i in [member]是检查i是否存在[member]中,而for i in [member]与其又存在怎样不同?希望大神能解释背后运行的原理,先行谢过喽:loveliness:
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-10-13 21:17:36 | 显示全部楼层
前者是检查,返回True 或者 False。
后者是遍历,返回列表里的每一个元素。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-13 21:21:04 | 显示全部楼层
不知道啊。。。。每一个人都要走自己的路
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-13 23:25:27 | 显示全部楼层
~风介~ 发表于 2015-10-13 21:17
前者是检查,返回True 或者 False。
后者是遍历,返回列表里的每一个元素。

能不能在运行原理上作出解释,为什么多出for,运行结果会发生不同
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-14 00:07:10 | 显示全部楼层
水水更健康

评分

参与人数 2荣誉 -10 鱼币 -15 收起 理由
黑龍 -10 -10 请不要无意义灌水!
小甲鱼 -5 请不要无意义灌水!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 2

使用道具 举报

发表于 2015-10-14 11:53:15 | 显示全部楼层
触摸纯白 发表于 2015-10-13 23:25
能不能在运行原理上作出解释,为什么多出for,运行结果会发生不同

因为写Python的人就是这么规定的.......
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-14 13:42:55 | 显示全部楼层
因为for 是一种循环啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-14 22:33:02 | 显示全部楼层
~风介~ 发表于 2015-10-14 11:53
因为写Python的人就是这么规定的.......

额。我想知道解释器怎么解释的:sweat:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-14 22:35:53 | 显示全部楼层
旋转风 发表于 2015-10-14 13:42
因为for 是一种循环啊

我知道,但是我想知道是 i in [member]之前有for与没有for,解释器执行的过程有什么不同
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-14 22:59:51 | 显示全部楼层
for 语句是触发容器的迭代器,比如 for each in "FishC" 实现起来就是酱紫:

  1. >>> string = "FishC"
  2. >>> it = iter(string)
  3. >>> while True:
  4.         try:
  5.                 each = next(it)
  6.         except StopIteration:
  7.                 break
  8.         print(each)
复制代码


那什么是迭代器,迭代器规定为实现了 __next()__ 和 __iter()__ 魔法方法的容器……

具体知识点及详解请参考《零基础入门学习Python》048讲。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-15 01:08:58 | 显示全部楼层
小甲鱼 发表于 2015-10-14 22:59
for 语句是触发容器的迭代器,比如 for each in "FishC" 实现起来就是酱紫:


刚开始看《零基础入门学习Python》,现在还不到20讲。。
对于for语句你给我的代码,我是这样理解的:
1、对于一个序列string,使用iter函数建立一个只在首端(即索引为0端)而且只出不进的顺序序列it
2、通过next函数一个个取出顺序序列it的元素,附带代码因此重复执行
3、直到完全取出顺序序列it的元素,继续执行后边的代码
我理解对吧?你讲的非常好,感谢你的视频:lol:
无标题.png

评分

参与人数 1荣誉 +5 鱼币 +3 收起 理由
~风介~ + 5 + 3 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-17 22:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表