参考:迭代

Note

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

在C、C++、Java等语言中,for循环迭代是通过下标实现的,如:

for (int i = 0; i < s.length(); i++) {
printf("%c ", s[i]);
}

而在Python中,迭代是通过for...in...实现的,只要对象是可迭代对象,无论支持下标与否,都可以进行迭代。

eg.

#!/usr/bin/env python3

L = ['it', 'is', 'a', 'list']

for i in range(4) :
print(L[i]) T = ('it', 'is', 'a', 'tuple') for i in range(4) :
print(T[i])

output:

sh-3.2# ./iteration1.py
it
is
a
list
it
is
a
tuple

因此,Pythonfor循环抽象程度要高于C、Java等语言的for循环。

2.Python支持迭代不支持下标的对象,如dict与字符串:

eg.dict

dic = {'Chen' : 20, 'Number' : '952693358', 'City' : 'FuZhou'}

for key in dic :
print(key, dic[key])
Chen 20
Number 952693358
City FuZhou

eg.string

str1 = 'HeyGirl'

for i in str1 :
print(i)
H
e
y
G
i
r
l

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

3.判断一个对象是可迭代对象 => 通过collections模块的Iterable类型:

>>> from collections import Iterable

>>> isinstance('abc', Iterable) # 判断字符串
True >>> isinstance(123, Iterable) # 判断整数
False >>> isinstance((0,), Iterable) # 判断tuple
True >>> isinstance(['a'], Iterable) # 判断list
True >>>

4.如果要使list实现下标循环 => 内置的enumerate函数 => 将list转换为索引-元素对。

L = ['Chen', 'Mac', 'IPhone', 'Github']

for i, value in enumerate(L) :
print(i, value)
0 Chen
1 Mac
2 IPhone
3 Github

2017/2/5

最新文章

  1. 闲话RPC调用
  2. android ptl
  3. sharepoint SPFolder的使用
  4. javaScript增加样式规则(新增样式)
  5. 我也谈“the difference between Factory, Service, and Provider in Angular”
  6. 解决ssh或ftp下root用户认证失败问题
  7. 剑指Offer——栈的java实现和栈的应用举例
  8. 关于Redis和Memcache的比较
  9. 记一次较坑的eclipse安装AmaterasUML插件经历
  10. ES中TF-IDF算法
  11. A Bug&#39;s Life(向量偏移)
  12. Hive安装 和管理
  13. 一个查看Access数据库密码的工具
  14. linux下安装微信小程序开发工具
  15. SharePoint 网站管理-PowerShell
  16. 金山PDF
  17. 裸眼3D全攻略3:拍摄3D—瞳距、镜距、视角偏转与空间感
  18. Html5学习4
  19. Springboot swagger2 导出api文档
  20. 点滴记录——在Ubuntu 14.04中使SublimeText 3支持中文输入法

热门文章

  1. hotspot的简单介绍
  2. 网络编程 - socket通信/粘包/文件传输/udp - 总结
  3. 优秀Python学习资源收集汇总--强烈推荐(转)
  4. LInux进程虚拟地址空间的管理
  5. Linux之Redis-redis哨兵集群详解
  6. 感知器python
  7. K-medodis聚类算法MATLAB
  8. mysql总结思维导图
  9. 注册表REG文件编写大全
  10. (转)VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径说明