python3之循环
本节主要介绍python中循环语句的用法以及其他一些语句exec等,文章后面附有之前的文章;
循环语句
if是值执行一次而循环时在条件满足情况下可以执行相同语句多次;使用循环可以轻松实现序列,词典等的迭代;
while循环:
用来在任何条件为真的情况下重复执行一个代码快:
while i>0:
代码快
其他代码;
演示如下:
>>>i=10
>>> while i>0:
... print("i=",i)
... i-=1
...
i= 10
i= 9
i= 8
i= 7
i= 6
i= 5
i= 4
i= 3
i= 2
i= 1
>>>
for循环:
一般while循环已经满足我们要求了,但是有些时候还得去选择for循环更加有效;比如要为一个集合(序列和其他可迭代对像)的每个元素都执行一个代码快。这时候可以使用for语句;
基本形式:
for <迭代数> in <对象集合>:
>>> name=("peace","rong","nick")
>>> for i in name:
... print(i)
...
peace
rong
nick
>>>
一些迭代工具
之前讲解字典时有讲过字典的迭代,现在介绍一下常用的迭代工具;
并行迭代
程序可以同时迭代两个序列
内建函数zip函数可以用来进行并行迭代,这里需要注意的是python2返回的是元祖列表,而python3中返回的是可迭代对象
##python2.7
>>> num = zip((1, 2), (3, 4))
>>> num
[(1, 2), (3, 4)]
#返回的是元祖列表;
##python3.4
>>> num=zip((1,2),(3,4))
>>> num
<zip object at 0x7fc5b1e7ef08>
>>>
#返回的是一个对象,并且支持一次遍历。如果需要重新遍历得重新赋值一次;
#但是都支持如下的遍历:
>>> for i,j in num:
... print(i,j)
...
1 3
2 4
当然也可以按索引迭代:
有些时候需要访问序列中的对象,同时还想获取当前对象的索引,例如替换字符串可以使用下面的方法:
>>> strings=["peace","rong","nick"]
>>> index=0
>>> for string in strings:
... if "on" in string:
... strings[index]="peace"
... index+=1
...
>>> strings
['peace', 'peace', 'nick']
>>>
跳出循环:
1.break语句
与其他自然语言c等没有差别;就是结束循环;
2。continue语句:
同样它只是让当次迭代提前结束:
演示如下:
>>> num=[2,4,5,6,]
>>> for i in num:
... if i==5:
... break
... print (i)
...
2
4
>>> for i in num:
... if i==5:
... continue
... print(i)
...
2
4
6
>>>
循环中的else语句:
else子句可以加在循环后,他仅在没有调用break语句时执行:还是刚在的例子:
>>> num=[2,4,5,6]
>>> for i in num:
... if i==7:
... break
... else:
... print("not 7")
...
not 7
#没有执行break打印7
列表推导式
列表推导式就是利用其他的列表创建新的列表;他的工作方式类似于for循环也很简单;
例如:创建由range(10)中每个x的平方组成;
>>> [x*x for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
同样也可以加条件:比如创建只能被4整除的平方数:
>>> [x*x for x in range(10) if x%4==0]
[0, 16, 64]
>>>
也可以增加更多的for:
>>> [[x*x,y*y] for x in range(10) for y in range(10) if x%4==0 if y%3==0]
[[0, 0], [0, 9], [0, 36], [0, 81], [16, 0], [16, 9], [16, 36], [16, 81], [64, 0], [64, 9], [64, 36], [64, 81]]
>>>
pass,del,exec介绍
python3中pass
pass语句就是什么都不做,让程序往下执行:比如可以让if,for,while,等块什么都不做时,我们可以加上pass
>>> for i in range(10):
...
File "<stdin>", line 2
^
IndentationError: expected an indented block
>>> for i in range(10):
... pass
...
>>>
#从上可以看到不加pass就出错了。因为python时不允许空块存在的;
>>> x=11
>>> if x>12:
... print("x>12")
... else:
... #等下在写
... pass
...
>>>
python3中del
del删除语句不仅会删除一个对象的引用,也会删除那个名字本省:演示如下
>>> x=1
>>> del x
>>> x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined
>>>
#x这个名字已经不存在了
但是当两个引用指向同一个对象时,删掉的只是引用名:
#删掉y后x还是指向原来的对象;
>>> x=[1,2]
>>> y=x
>>> y[1]=4
>>> x
[1, 4]
>>> del y
>>> x
[1, 4]
>>>
python3中exec和eval
有些时候我们可能想要得到动态代码,然后将其作为语句执行或作为表达式计算;
例如执行一个字符串的语句是exec
>>>exec("print(1+3)")
4
当在字符串中定义变量时一定要小心;如果重名了就会发生不必要的错误;可以通过in来解决,起到了放置代码字符串命名空间的字典;
例如:
>>>from math import sin
>>>scope={}
>>>exec("sqrt=1") in scope
>>>sqrt(4)
2
>>>scope['sqrt']
1
eval是类似于exec的内建函数,只不过是eval会计算表达式,并且返回结果;同样可以使用命名空间;
简单演示如下
>>>eval(input("enter an expression:"))
enter an expression:6+8*2
42
```
####相关链接:
[python3入门之类](http://rlovep.com/2015/09/23/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E7%B1%BB/)
[python3入门之函数](http://rlovep.com/2015/09/06/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E5%87%BD%E6%95%B0/)
[python3入门之循环](http://rlovep.com/2015/09/06/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E5%BE%AA%E7%8E%AF/)
[python3之if语句](http://rlovep.com/2015/08/05/python3%E4%B9%8Bif%E8%AF%AD%E5%8F%A5/)
[python3入门之赋值语句介绍](http://rlovep.com/2015/08/03/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E8%B5%8B%E5%80%BC%E8%AF%AD%E5%8F%A5%E4%BB%8B%E7%BB%8D/)
[python3入门之print,import,input介绍](http://rlovep.com/2015/08/03/python3%E5%85%A5%E9%97%A8%E4%B9%8Bprint%EF%BC%8Cimport%EF%BC%8Cinput%E4%BB%8B%E7%BB%8D/)
[python3入门之set](http://www.cnblogs.com/onepeace/p/4791578.html)
[python3入门之字典](http://rlovep.com/2015/07/29/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E5%AD%97%E5%85%B8/)
[python3入门之字符串](http://rlovep.com/2015/07/28/python%E5%85%A5%E9%97%A8%E4%B9%8B%E5%AD%97%E7%AC%A6%E4%B8%B2/)
[python3入门之列表和元组](http://rlovep.com/2015/07/14/python%E5%85%A5%E9%97%A8%E4%B9%8B%E5%88%97%E8%A1%A8%E5%92%8C%E5%85%83%E7%BB%84/)
[python3入门之软件安装](http://rlovep.com/2015/07/14/python%E5%85%A5%E9%97%A8%E4%B9%8B%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85/)
[python3爬虫之入门和正则表达式](http://rlovep.com/2015/09/23/python3%E7%88%AC%E8%99%AB%E4%B9%8B%E5%85%A5%E9%97%A8%E5%92%8C%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/)
python3之循环的更多相关文章
- 【转】python3 内循环中遍历map,遍历一遍后再次进入内循环,map为空
今天在使用python map的过程中,发现了一个奇怪问题,map遍历完成后,再次访问map,发现map为空了,特记录下来,以备日后查看. 如下代码,期望的结果是每次从外循环进入内循环,map都从头开 ...
- python3,循环,方法练习2
1:编写for循环,利用索引遍历出每一个字符 msg = 'hello egon 666' msg = 'hello egon 666' i = 0 for i in range(0, len(msg ...
- python3 while循环及for循环
yueer = 18 count = 0 while count < 3: yueerage = int(input('悦儿多大呢:')) if yueerage == yueer: print ...
- 笔记||Python3之循环
循环: 循环概念:在一定条件下,重复做某件事情(代码) while循环:1 - while 条件表达式: 循环体 2 - 当 条件表达式 == True 才执行 ...
- Python3+RobotFramewok 循环判断以及Evaluate用法(三)
本章主要介绍RF的循环,判断以及关键字Evaluate. 1. for循环 在RF中通过 :FOR 编写循环 :FOR ${i} in range 10 log ${i} @{list} create ...
- python3.3while循环
#while循环与for循环不同的是,while循环的停止条件是自己设置! i=0#初始值while i<=10:#循环条件 print(i)#while循环嵌套if条件 if i==5: pr ...
- python3.1for循环及应用
#给定范围,进行循环for i in range (0,5): print(i) #对序列进行遍历list1=[1,2,3,4,5]for i in list1: print(i+1) #对元组进行遍 ...
- python3 while循环
python不支持n++这样格式,因为python中变量不像c那样事先定义好变量类型,在内存中开辟指定的空间,然后赋值. python中以字符串为例,事先在内存划分空间来存放字符串,然后用变量名来指向 ...
- 全国计算机等级考试二级Python语言程序设计考试大纲
全国计算机等级考试二级Python语言程序设计考试大纲(2018年版) 基本要求 掌握Python语言的基本语法规则. 掌握不少于2个基本的Python标准库. 掌握不少于2个Python第三方库,掌 ...
随机推荐
- 【UVA11613 训练指南】生产销售规划 【费用流】
题意: Acme公司生产一种X元素,给出该元素在未来M个月中每个月的单位售价.最大产量.最大销售量,以及最大储存时间(过期报废不过可以储存任意多的量).你的任务是计算出公司能够赚到的最大利润. 分析: ...
- 26-三个水杯(bfs)
三个水杯 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互倒水,并且水杯没有 ...
- 隐藏在default construct后面的是什么
C++新手很容易陷入两个认识上的误区: 1.任何类如果不显示的定义一个构造函数那么编译器就会构造出一个默认构造函数. 2.默认构造函数负责类的所有数据成员的初始化,显然不是这样的. 为什么不是这样的, ...
- DWR 3.0 入门示例教程
DWR(Direct Web Remoting) DWR is a Java library that enables Java on the server and JavaScript in a b ...
- Web测试实践-任务进度-Day01
任务安排 说明:小组全体成员都参与了会议,对该实践进行分析以及对实践任务的拆分以及进行了任务的分配. 小组成员 华同学.郭同学.覃同学.刘同学.穆同学.沈同学 阶段划分 阶段1:评测被测系统 1.对被 ...
- [operator]ELK6 index pattern的问题
完成了EL/FK的搭建之后,在kibana的主页只能看到默认的索引? 其实这个索引名字的设置是在logstash-smaple.conf(elk6.4)里的设置,比如我这样设置 input { bea ...
- QT学习之事件处理
Qt事件机制 Qt程序是事件驱动的, 程序的每个动作都是由幕后某个事件所触发.. Qt事件的发生和处理成为程序运行的主线,存在于程序整个生命周期. Qt事件的类型很多, 常见的qt的事件如下: 键盘事 ...
- zrender源码分析3--初始化Painter绘图模块
接上次分析到初始化ZRender的源码,这次关注绘图模块Painter的初始化 入口1:new Painter(dom, this.storage); // zrender.js /** * ZRen ...
- SSH整合案例
1.Hibernate框架 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernat ...
- mybatis SqlMapConfig.xml
一.SqlMapConfig.xml 1.属性properties 在入门时,以抽取出连接数据库的属性得到properties文件. a.可以通过resource和url来获得属性. b.proper ...