跟老齐学Python之for循环语句


Posted in Python onOctober 02, 2014

废话少说,上干活。

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)<len(d) else len(d)    #判断c,d的长度,将短的长度拿出来

>>> 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 相关文章推荐
python应用程序在windows下不出现cmd窗口的办法
May 29 Python
Python实现的最近最少使用算法
Jul 10 Python
一波神奇的Python语句、函数与方法的使用技巧总结
Dec 08 Python
python字符串连接方法分析
Apr 12 Python
python学生管理系统
Jan 30 Python
python调用动态链接库的基本过程详解
Jun 19 Python
通过PHP与Python代码对比的语法差异详解
Jul 10 Python
python实现函数极小值
Jul 10 Python
django 微信网页授权登陆的实现
Jul 30 Python
python安装virtualenv虚拟环境步骤图文详解
Sep 18 Python
Python3 读取Word文件方式
Feb 13 Python
Python基于gevent实现文件字符串查找器
Aug 11 Python
跟老齐学Python之用while来循环
Oct 02 #Python
跟老齐学Python之复习if语句
Oct 02 #Python
python中pycurl库的用法实例
Sep 30 #Python
python采用getopt解析命令行输入参数实例
Sep 30 #Python
Python实现115网盘自动下载的方法
Sep 30 #Python
python打开网页和暂停实例
Sep 30 #Python
Python解析网页源代码中的115网盘链接实例
Sep 30 #Python
You might like
PHP基础学习小结
2011/04/17 PHP
如何利用http协议发布博客园博文评论
2015/08/03 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
php代码架构的八点注意事项
2016/01/25 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
js几秒以后倒计时跳转示例
2013/12/26 Javascript
浅谈JS中的bind方法与函数柯里化
2016/08/10 Javascript
文件上传插件SWFUpload的使用指南
2016/11/29 Javascript
进阶之初探nodeJS
2017/01/24 NodeJs
微信小程序实现签到功能
2018/10/31 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
[07:26]2015国际邀请赛第二日TOP10集锦
2015/08/06 DOTA
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
python字符串循环左移
2019/03/08 Python
Django-Model数据库操作(增删改查、连表结构)详解
2019/07/17 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
Philosophy美国官网:美国美容品牌
2016/08/15 全球购物
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
Pure Collection美国官网:来自英国羊绒专家的奢华羊绒
2017/11/19 全球购物
求职信内容考虑哪几点
2013/10/05 职场文书
高级护理专业大学生求职信
2013/10/24 职场文书
秋季运动会加油稿200字
2014/01/11 职场文书
医院总经理岗位职责
2014/02/04 职场文书
经营管理策划方案
2014/05/22 职场文书
社区两委对照检查材料
2014/08/23 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
美丽的大脚观后感
2015/06/03 职场文书
《玩出了名堂》教学反思
2016/02/17 职场文书
何时使用Map来代替普通的JS对象
2021/04/29 Javascript
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python
JavaScript展开运算符和剩余运算符的区别详解
2022/02/18 Javascript
Linux中如何安装并部署Redis
2022/04/18 Servers