在开发的过程中,假如给你一个list或者tuple,我们可以通过for循环来遍历这个list或者tuple,这种遍历我们成为迭代(Iteration)。在Python中,迭代是通过for ... in来完成的,而很多语言比如C或者Java,迭代list是通过下标完成的,比如Java代码

:  for(int x = 0;x<n;x++) { a[i] = i; }

可以看出,Python的for循环抽象程度要高于Java的for循环,因为Python的for循环不仅可以用在list或tuple上,还可以作用在其他可迭代对象上。list这种数据类型虽然有下标,但很多其他数据类型是没有下标的,但是,只要是可迭代对象,无论有无下标,都可以迭代,比如dict也可以迭代。

1. 列表(List)的迭代:

 >>> list1 = []
>>> n = 10
>>> for i in range(n):
... list1.append(i)
...
>>> list1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>

2. 元组tuple的迭代:

3. 字典(Dict)的迭代:

 >>> #字典的迭代
>>> dict1 = {'a':1,'b':2,'c':3,'d':4}
>>> dict1
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
>>> for key in dict1:
... print key
...
a
c
b
d
>>>

因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.itervalues(),如果要同时迭代key和value,可以用for k, v in d.iteritems()

 def get_tp_type_name(value):
if value is None:
return "" for k, v in TP_TYPE_CHOICE:
if k == value:
return v

4. 任意字符串的迭代:

 >>> for ch in "abcadadadwf":
... print ch
...
a
b
c
a
d
a
d
a
d
w
f
>>>

所以,当我们使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型。如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

 >>> from collections import Iterable
>>> isinstance('abudauidua',Iterable)#str是否可以迭代
True
>>> isinstance(dict1,Iterable)#dict1是否可以迭代
True
>>> isinstance(list1,Iterable)#list1是否可以迭代
True
>>> isinstance(tuple1,Iterable)#list1是否可以迭代
True
>>> isinstance(123456789,Iterable)#全数字是否可以迭代
False
>>>

如果要对list实现类似Java那样的下标循环怎么办?Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:

 >>> for i ,value in enumerate(['a','b','c','d']):
... print i ,value
...
0 a
1 b
2 c
3 d
>>>

像这种在一个迭代中一次引用了两个变量在python中是很常见的一件事情,因此不应太奇怪,例如:起初我看到这样的循环输出语句也是感到很奇怪,慢慢就习惯了。

 >>> for x,y in [(1,2),(3,4),(5,6)]:
... print x,y
...
1 2
3 4
5 6

python学习之”迭代从入门到精通“的更多相关文章

  1. 这是2020年最强Python学习路线,从入门到精通!

    给大家整理的这套python学习路线图,按照此教程一步步的学习来,肯定会对python有更深刻的认识.或许可以喜欢上python这个易学,精简,开源的语言.全民学Python的话题铺天盖地,中国的Py ...

  2. 学习笔记之C++入门到精通(名师教学·手把手教会)【职坐标】_腾讯课堂

    C++入门到精通(名师教学·手把手教会)[职坐标]_腾讯课堂 https://ke.qq.com/course/101465#term_id=100105503 https://github.com/ ...

  3. Python学习笔记--迭代

    在Python中,迭代是通过for ... in来实现.只要是可迭代的对象都可以用for ... in来进行历遍. 常用的有list.tuple.dict等.举例如下: 列表的迭代: L=[1,2,3 ...

  4. 第一弹:超全Python学习资源整理(入门系列)

    随着人工智能.大数据的时代到来,学习Python的必要性已经显得不言而喻.我经常逛youtube,发现不仅仅是以编程为职业的程序员,证券交易人员,生物老师,高级秘书......甚至许多自由撰稿人,设计 ...

  5. Python学习手册(1入门知识-数据类型)

    UNIX env查找技巧 在一些UNIX系统上,可以用这样一种方法避免硬编码Python解释器的路径,在文件的特定的第一行注释中写上这样一句话. #! usr/bin/env/ python...sc ...

  6. python学习之旅(入门)

    一.list 有序集合 1.list 有序集合  L = [95.5, 85, 59]  如L[1] = 85 ,L[-1] = 59  和php中array一个意思  用[] 表示就可以了 2.新增 ...

  7. Python学习零基础<入门必学>

    1. 注释注释 是任何存在于 # 号右侧的文字,其主要用作写给程序读者看的笔记. 2. 字面常量一个字面常量(Literal Constants)的例子是诸如 5.1.23 这样的数字,或者是如 这是 ...

  8. Python学习(四):模块入门

    1.模块介绍 模块:代码实现的某个功能的集合 模块分类: 自定义模块 内置标准模块 开源模块 模块的常用方法: 是否为主文件:__name__ == '__main__' 如果是直接执行的某程序,那么 ...

  9. Python学习(二):函数入门

    1.函数代码格式: def 函数名(): 函数内容 执行函数:函数名() 2.代码举例: #!/usr/bin/env python #coding=utf-8 #定义函数 def Func1(): ...

随机推荐

  1. 【Unicode】字符编码表信息

    UTF-8有点类似于Haffman编码,它将Unicode编码为:0x00-0x7F的字符,用单个字节来表示:0x80-0x7FF的字符用两个字节表示:0x800-0xFFFF的字符用3字节表示:   ...

  2. MAC终端显示隐藏文件,关闭显示

    1.显示隐藏文件夹显示:defaults write com.apple.finder AppleShowAllFiles -bool true (1)复制“defaults write com.ap ...

  3. C#操控条形码扫描枪

    // 条码扫描器 // 窗体部分相关代码: using System; using System.Collections.Generic; using System.ComponentModel; u ...

  4. 11.14 noip模拟试题

      题目名称 正确答案 序列问题 长途旅行 英文名称 answer sequence travel 输入文件名 answer.in sequence.in travel.in 输出文件名 answer ...

  5. C#Combobox显示名称保存代码

    private void Form1_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add ...

  6. U3D 2D游戏之黑暗纪元 2D游戏基础入门开发全(1)

    第一个U3D 2D游戏的例子,全部自己编写,算是入门用,这里记录一下. 1.首先游戏把层次布置好,这里分为 背景层,游戏层,UI层 背景层 (Background-1):就是单纯的背景显示作用. 游戏 ...

  7. JAVA Oauth 认证服务器的搭建

    http://blog.csdn.net/binyao02123202/article/details/12204411 1.软件下载 Oauth服务端: http://code.google.com ...

  8. Spring.net架构示例(含Aop和Ioc)源码

    最近写了一个Spring.net的架构. 一.架构主图 架构图的数据流程走向是: UI层=>UILogic>=>Service>Business=>DataAccess ...

  9. 基于C#的IBM消息队列操作客户端

    背景: 做XX项目需要把交易的消息推送给YY系统,技术选型MQ 另:选用MQ原因是为了防止YY系统宕机,无法接受收消息 实现 1.安装IBM WebSphere MQ客户端 2.引用amqmdnet. ...

  10. Mysql笔记【1】-数据库的基本操作(创建/删除)

    1.创建数据库 创建数据库(如果存在,则报错) #创建名称为test的数据库 create database test 查询创建完的数据库 show databases 2.删除数据库 删除数据库(如 ...