本节主要介绍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循环也非常easy;
比如:创建由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入门之类
python3入门之函数
python3入门之循环
python3之if语句
python3入门之赋值语句介绍
python3入门之print,import。input介绍
python3入门之set
python3入门之字典
python3入门之字符串
python3入门之列表和元组
python3入门之软件安装
python3爬虫之入门和正則表達式