废话少说,上干活。

for的基本操作

for是用来循环的,是从某个对象那里依次将元素读取出来。看下面的例子,将已经学习过的数据对象用for循环一下,看看哪些能够使用,哪些不能使用。同时也是复习一下过往的内容。

>>> name_str = "qiwsir"

>>> for i in name_str: #可以对str使用for循环

... print i,

...

q i w s i r

>>> name_list = list(name_str)

>>> name_list

['q', 'i', 'w', 's', 'i', 'r']

>>> for i in name_list: #对list也能用

... print i,

...

q i w s i r

>>> name_set = set(name_str) #set还可以用

>>> name_set

set(['q', 'i', 's', 'r', 'w'])

>>> for i in name_set:

... print i,

...

q i s r w

>>> name_tuple = tuple(name_str)

>>> name_tuple

('q', 'i', 'w', 's', 'i', 'r')

>>> for i in name_tuple: #tuple也能呀

... print i,

...

q i w s i r

>>> name_dict={"name":"qiwsir","lang":"python","website":"qiwsir.github.io"}

>>> for i in name_dict: #dict也不例外

... print i,"-->",name_dict[i]

...

lang --> python

website --> qiwsir.github.io

name --> qiwsir

除了上面的数据类型之外,对文件也能够用for,这在前面有专门的《不要红头文件》两篇文章讲解有关如何用for来读取文件对象的内容。看官若忘记了,可去浏览。

for在list解析中,用途也不可小觑,这在讲解list解析的时候,业已说明,不过,还是再复习一下为好,所谓学而时常复习之,不亦哈哈乎。

>>> one = range(1,9)

>>> one

[1, 2, 3, 4, 5, 6, 7, 8]

>>> [ x for x in one if x%2==0 ]

[2, 4, 6, 8]

什么也不说了,list解析的强悍,在以后的学习中会越来越体会到的,佩服佩服呀。

列位如果用python3,会发现字典解析、元组解析也是奇妙的呀。

要上升一个档次,就得进行概括。将上面所说的for循环,概括一下,就是下图所示:

请输入图片描述

用一个文字表述:

for iterating_var in sequence:

statements

iterating_var是对象sequence的迭代变量,也就是sequence必须是一个能够有某种序列的对象,特别注意没某种序列,就是说能够按照一定的脚标获取元素。当然,文件对象属于序列,我们没有用脚标去获取每行,如果把它读取出来,因为也是一个str,所以依然可以用脚标读取其内容。

zip

zip是什么东西?在交互模式下用help(zip),得到官方文档是:

zip(...)

zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]

Return a list of tuples, where each tuple contains the i-th element from each of the argument sequences. The returned list is truncated in length to the length of the shortest argument sequence.

通过实验来理解上面的文档:

>>> a = "qiwsir"

>>> b = "github"

>>> zip(a,b)

[('q', 'g'), ('i', 'i'), ('w', 't'), ('s', 'h'), ('i', 'u'), ('r', 'b')]

>>> c = [1,2,3]

>>> d = [9,8,7,6]

>>> zip(c,d)

[(1, 9), (2, 8), (3, 7)]

>>> e = (1,2,3)

>>> f = (9,8)

>>> zip(e,f)

[(1, 9), (2, 8)]

>>> m = {"name","lang"}

>>> n = {"qiwsir","python"}

>>> zip(m,n)

[('lang', 'python'), ('name', 'qiwsir')]

>>> s = {"name":"qiwsir"}

>>> t = {"lang":"python"}

>>> zip(s,t)

[('name', 'lang')]

zip是一个内置函数,它的参数必须是某种序列数据类型,如果是字典,那么键视为序列。然后将序列对应的元素依次组成元组,做为一个list的元素。

下面是比较特殊的情况,参数是一个序列数据的时候,生成的结果样子:

>>> a

'qiwsir'

>>> c

[1, 2, 3]

>>> zip(c)

[(1,), (2,), (3,)]

>>> zip(a)

[('q',), ('i',), ('w',), ('s',), ('i',), ('r',)]

这个函数和for连用,就是实现了:

>>> c

[1, 2, 3]

>>> d

[9, 8, 7, 6]

>>> for x,y in zip(c,d): #实现一对一对地打印

... print x,y

...

1 9

2 8

3 7

>>> for x,y in zip(c,d): #把两个list中的对应量上下相加。

... print x+y

...

10

10

10

上面这个相加的功能,如果不用zip,还可以这么写:

>>> length = len(c) if len(c)

>>> for i in range(length):

... print c[i]+d[i]

...

10

10

10

以上两种写法那个更好呢?前者?后者?哈哈。我看差不多了。还可以这么做呢:

>>> [ x+y for x,y in zip(c,d) ]

[10, 10, 10]

前面多次说了,list解析强悍呀。当然,还可以这样的:

>>> [ c[i]+d[i] for i in range(length) ]

[10, 10, 10]

for循环语句在后面还会经常用到,其实前面已经用了很多了。所以,看官应该不感到太陌生。

python的for语句是否只有一种写法_跟老齐学Python之for循环语句相关推荐

  1. python实验室怎么样_跟老齐学Python之一个免费的实验室

    在学生时代,就羡慕实验室,老师在里面可以鼓捣各种有意思的东西.上大学的时候,终于有机会在实验室做大量实验了,因为我是物理系,并且,遇到了一位非常令我尊敬的老师--高老师,让我在他的实验室里面,把所有已 ...

  2. 跟老齐学python轻松入门_跟老齐学Python 轻松入门 中文pdf_Python教程

    资源名称:跟老齐学Python 轻松入门 中文pdf 第0章 预备 1第1章 基本对象类型 13第2章 语句和文件 100第3章 函数 145第4章 类 181第5章 错误和异常 233第6章 模块 ...

  3. python if条件思维导图_跟老齐学Python之从if开始语句的征程

    一般编程的教材,都是要把所有的变量类型讲完,然后才讲语句.这种讲法,其实不符合学习的特点.学习,就是要循序渐进的.在这点上,我可以很吹一通了,因为我做过教师,研究教育教学,算是有一点心得的.所以,我在 ...

  4. python 从大到小循环_跟老齐学Python之关于循环的小伎俩

    不是说while就不用,比如前面所列举而得那个猜数字游戏,在业务逻辑上,用while就更容易理解(当然是限于那个游戏的业务需要而言).另外,在某些情况下,for也不是简单地把对象中的元素遍历一遍,比如 ...

  5. python如何自学模块_跟老齐学Python之Import 模块

    认识模块 对于模块,在前面的一些举例中,已经涉及到了,比如曾经有过:import random (获取随机数模块).为了能够对模块有一个清晰的了解,首先要看看什么模块,这里选取官方文档中对它的定义: ...

  6. python头文件库_跟老齐学Python之不要红头文件(1)

    这两天身体不给力,拖欠了每天发讲座的约定,看官见谅. 红头文件,是某国特别色的东西,在python里不需要,python里要处理的是计算机中的文件,包括文本的.图片的.音频的.视频的等等,还有不少没见 ...

  7. python写入一个文件之前可以不打开_跟老齐学Python之不要红头文件(1)

    这两天身体不给力,拖欠了每天发讲座的约定,看官见谅. 红头文件,是某国特别色的东西,在python里不需要,python里要处理的是计算机中的文件,包括文本的.图片的.音频的.视频的等等,还有不少没见 ...

  8. python函数和方法的编写原则_跟老齐学Python之传说中的函数编写条规

    关于函数的事情,总是说不完的,下面就罗列一些编写函数的注意事项.特别声明,这些事项不是我总结的,我是从一本名字为<Learning Python>的书里面抄过来的,顺便写成了汉语,当然,是 ...

  9. python脚本用类编写_跟老齐学Python之编写类之二方法

    数据流转过程 除了在类中可以写这种函数之外,在类中还可以写别的函数,延续上一讲的例子: #!/usr/bin/env python #coding:utf-8 class Person: def __ ...

最新文章

  1. 16 系统测试之功能测试
  2. Linux下C语言使用、编译与调试
  3. [翻译] JTCalendar
  4. BZOJ 2742: [HEOI2012]Akai的数学作业
  5. windows上的几个常用端口号
  6. android怎么垂直居中且靠右,placeholder 靠右垂直居中/位置兼容
  7. STM32F0使用LL库实现SHT70通讯
  8. 成立出版社的条件_厦门大学出版社招聘启事
  9. 软件测试计划和测试报告
  10. 基于神经网络预测车道行驶的自动驾驶
  11. What's New in Qt 5.5 5.4,以及5.5 所有module
  12. MODIS,Himwari-8遥感数据介绍
  13. 大华设备播放过程中设置播放速度
  14. Javac选项source和target的作用
  15. 一文搞懂机器学习准确率(Accuracy)、精确率(Pecision)、召回率(Recall)以及TP、FP、TN、FN
  16. 苹果手机如何设置喜欢的铃声?想给自己的iphone换个别具特色的铃声吗?
  17. 2021SC@SDUSC Zxing开源代码(十七)Zxing代码解析——一维码
  18. 【阅读文献】单目视觉SLAM方法综述【4】~特征点深度获取+地图尺度控制
  19. 关于举办“第五届全国现代物流绿色包装与循环共用大会”的通知
  20. css学习笔记-盒子的样式

热门文章

  1. 压缩base 64字符串_ftp下载多个文件,ftp下载多个文件打包成一个压缩包
  2. linux 生成密码本,Linux下CentOS7使用OTPW实现双因子密码本登录
  3. python语言基础与应用章节七_专技天下Python语言基础与应用章节测试答案
  4. php 通知客户端,PHP+SSE服务器向客户端推送消息
  5. 如何求解单边z变换_的单边Z变换。.ppt
  6. html隐藏元素的方式,Web前端:CSS3——3种隐藏元素方法的区别
  7. php实现页面雪花效果,JavaScript_使用javascript实现雪花飘落的效果,看了javascript网页特效实例大全 - phpStudy...
  8. C语言visual studio警告:取消对NULL指针“p”的引用
  9. JavaScript学习笔记(6)BOM(浏览器对象模型)pc网页特效(停止学习)
  10. script到底应该放在哪里