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

来源:互联网 发布:linux arp缓存时间 编辑:程序博客网 时间:2024/06/03 19:58

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']

forwordin words:

    print word

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

2.1      循环遍历字典

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

forkeyin d:

    print key,'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):

    print name,'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'in string:

        names[index]='[error]'

print names

 

输出:

['[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!')

<reversedobject at 0x023FE4F0>

>>>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 "<stdin>", line 1, in<module>

NameError: name'x' is not defined

如下演示:

>>>x=y=1

>>> delx

>>> y

1

>>> x

Traceback (mostrecent call last):

  File "<stdin>", line 1, in<module>

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

阅读全文
0 0