如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。

在Python中,迭代是通过for ... in来完成的,而很多语言比如C语言,迭代list是通过下标完成的,比如Java代码:for (i=0; i

n = list[i];

}

可以看出,Python的for循环抽象程度要高于C的for循环,因为Python的for循环不仅可以用在list或tuple上,还可以作用在其他可迭代对象上。

list这种数据类型虽然有下标,但很多其他数据类型是没有下标的,但是,只要是可迭代对象,无论有无下标,都可以迭代,比如dict就可以迭代:>>> d = {'a': 1, 'b': 2, 'c': 3}

>>> for key in d:

...     print(key)

...

a

c

b

因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。

默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()。

由于字符串也是可迭代对象,因此,也可以作用于for循环:>>> for ch in 'ABC':

...     print(ch)

...

A

B

C

所以,当我们使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型。

那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:>>> from collections import Iterable

>>> isinstance('abc', Iterable) # str是否可迭代

True

>>> isinstance([1,2,3], Iterable) # list是否可迭代

True

>>> isinstance(123, Iterable) # 整数是否可迭代

False

最后一个小问题,如果要对list实现类似Java那样的下标循环怎么办?Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:>>> for i, value in enumerate(['A', 'B', 'C']):

...     print(i, value)

...

0 A

1 B

2 C

上面的for循环里,同时引用了两个变量,在Python里是很常见的,比如下面的代码:

python 迭代详解_详解python中的迭代相关推荐

  1. python的执行过程_在交互式环境中执行Python程序过程详解

    前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...

  2. python变量定义大全_详解python变量与数据类型

    这篇文章我们学习 Python 变量与数据类型 变量 变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念,变量可以通过变量名访问.在 Python 中 变量命名规定,必须是大小写英文,数字 ...

  3. python提取hbase数据_详解python操作hbase数据的方法介绍

    配置 thrift python使用的包 thrift 个人使用的python 编译器是pycharm community edition. 在工程中设置中,找到project interpreter ...

  4. python解释器在哪里_详解查看Python解释器路径的两种方式

    进入python的安装目录, 查看python解释器 进入bin目录 # ls python(看一下是否有python解释器版本) # pwd (查看当前目录) 复制当前目录即可 1. 通过脚本查看 ...

  5. python解析器打包_打包发布Python模块的方法详解

    前言 昨天把自己的VASP文件处理库进行了打包并上传到PyPI,现在可以直接通过pip和easy_install来安装VASPy啦(同时欢迎使用VASP做计算化学的童鞋们加星和参与进来), 由于自己的 ...

  6. python安装tkinter模块_详解python tkinter模块安装过程

    引言: 在Python3下运行Matplotlib之时,碰到了"No module named _tkinter"的问题,花费数小时进行研究解决,这里讲整个过程记录下来,并尝试分析 ...

  7. python交叉验证法_详解python实现交叉验证法与留出法

    在机器学习中,我们经常在训练集上训练模型,在测试集上测试模型.最终的目标是希望我们的模型在测试集上有最好的表现. 但是,我们往往只有一个包含m个观测的数据集D,我们既要用它进行训练,又要对它进行测试. ...

  8. python gui开发工具_深入解析Python,透析应用开发,涵盖9大应用领域的Python框架...

    前言 当前,Python 已经成为最流行的程序设计语言之一,被越来越多的人作为首选语言来学习和应用.作为一种解释型的语言,Python具有内置的高级数据结构和简单有效的面向对象编程机制.同时,其语法简 ...

  9. python智能合约编程_如何用Python Flask开发以太坊智能合约

    将数据存储在数据库中是任何软件应用程序不可或缺的一部分.无论如何控制该数据库都有一个该数据的主控.区块链技术将数据存储到区块链网络内的区块中.因此,只要某个节点与网络同步,它们就会获得区块中数据的副本 ...

最新文章

  1. Spring管理Strust的Action
  2. 赞!经典教材《统计学习导论》终于有Python版了
  3. 高并发或高负载下的系统设计
  4. PHP学习记录之会话处理(二)
  5. 二、express中间件
  6. mysql 查询默认编码_查看及修改MYSQL默认编码
  7. Nodemon包的使用
  8. 60名英语专八的半年苦战:机器智能背后有一群“数字工人”
  9. Cityengine, 3ds MAX, FME
  10. ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(四) 添加表情、群聊功能...
  11. YANG-SUITE安装步骤
  12. Linux关闭占用端口的进程
  13. 太原冶金技师学院计算机系,山西冶金技师学院专业都有什么
  14. 体脂的计算Java_简单测试体脂率的两种经验公式
  15. LeetCode-Python-274. H指数
  16. mysql a foreign key constraint fails_外键记录有存在,插入数据却报错a foreign key constraint fails...
  17. ios虚拟服务器降级,升级了iOS 12很后悔,没关系手把手教你如何降级!
  18. 结构化数据和非结构化数据有何区别?
  19. Java、生成车牌号码
  20. python蟒蛇画法

热门文章

  1. crosstool-ng 编译交叉工具链的常见错误及解决办法
  2. 3 Oracle管理表
  3. linux week3
  4. KubeMeet 深圳站完整议题出炉
  5. Quick BI:降低使用门槛,大东鞋业8000家门店的数据导航
  6. 一个优秀的Push平台,需要经历怎样的前世今生
  7. e几个灯同时亮灭两次verilog_FPGA题及答案
  8. 还原《山海经》中的东方奇幻世界,这款手游是怎么做到的?
  9. 《苏醒之路》制作人王鲲:独立游戏如何成功出海?
  10. Python基础——PyCharm版本——第二章、数据类型和变量(超详细)