10. Python脚本学习笔记十循环语句

本篇名言:“走不完的前程停一停从容出步,急不来的心事想一想暂且丢开,干不尽的事情缓一缓轻松一回,赚不完的钱财思一思身外之物,此语送给你希望不要太辛苦!”

上节学习了IF循环,我们来看下PYTHON下如何来实现循环。

1.  WHILE循环

x=1

while x<=100:

print x

x+=1

上面代码实现了循环100次输出1-100的值。

2.  FOR循环

words=['this','is','an','ex','parrot']

forwordinwords:

printword

这里使用到了迭代器,详见后续介绍。

2.1      循环遍历字典

d={'x':1,'y':2,'z':3}

forkeyind:

printkey,'Corresonds to ',d[key]

输出如下:

yCorresonds to  2

xCorresonds to  1

z Corresondsto  3

字典没有顺序,需要顺序需要的话。可以将键值保持在单独的列表中。

3.  迭代工具

3.1      并行迭代(zip函数)

迭代两个序列,可以使用内建的zip 函数。

names=['a','b','c','d']
ages=[12,13,14,15]
forname,ageinzip(names,ages):
printname,'is', age,'years old'

输出结果:

a is12 years old

b is13 years old

c is14 years old

d is 15 yearsold

3.2      编号迭代enumerate

names=['aoke','boke','cokd','dekq']
forindex,stringinenumerate(names):
if'ok'instring:
names[index]='[error]'
printnames

输出:

['[error]','[error]', '[error]', 'dekq']

在迭代序列对象的时候,同时获得当前对象的索引,可以使用enumerate.

3.3      翻转和排序迭代

函数reversed和sorted函数。不过不修改原始对象。

>>> sorted(a)
[1, 2, 3, 4, 5]
>>> a
[5, 4, 3, 2, 1]
>>>sorted('Hello,world!')
['!', ',', 'H','d', 'e', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
>>>reversed('Hello,world!')
>>>list( reversed('Hello,world!'))
['!', 'd', 'l','r', 'o', 'w', ',', 'o', 'l', 'l', 'e', 'H']

对于字符串,reversed函数是纯粹的反转,而 sorted是根据字符进行排序。

4.  跳出循环

和高级语言类似,跳出可以使用continue和break

Break是跳出循环,continue是结束当前迭代,调到下一轮循环的开始。

5.  列表推导式

列表推导式是利用其它列表创建新列表。

推导0-10中每个x 的平方组成。

>>>[x*x for x in range(10)]

[0, 1, 4, 9, 16,25, 36, 49, 64, 81]

6.  3个常用语句

6.1      PASS

在代码中做占位符使用。

ifTrue:

pass

6.2      DEL

Python 会删除那些不再使用的对象。

>>> x=1
>>> delx
>>> x
Traceback (mostrecent call last):
File "", line 1, in
NameError: name'x' is not defined

如下演示:

>>>x=y=1
>>> delx
>>> y
1
>>> x
Traceback (mostrecent call last):
File "", line 1, in
NameError: name'x' is not defined

删除Y后,X还在的。因为删除的只是名称,而不是列表本身。在Python中是没有办法删除值的(在需要的时候,解释器会负责内存的回收)

6.3      EXEC

这个会动态的创建Python代码。

如:

>>>exec "print 'hello,world!'"
hello,world!

如下,赋值变量sqrt=1,但是将潜在的代码放入到命名空间作用的字典中,这样不会覆盖sqrt函数。

>>> from math import sqrt
>>> scope={}
>>> exec 'sqrt=1' in scope
>>> sqrt(4)
2.0
>>> scope['sqrt']
1

还有一个eval,类似于exec的内建工具。Eval计算Python表达式(以字符串书写),并且返回结果。

>>> scope={}
>>> scope['a']=2
>>> scope['b']=4
>>> eval('a*b',scope)
8