您的位置:首页 > 其它

一些迭代工具

2011-12-22 23:56 162 查看
编程,写编程,可是到现在 ,我倒觉得数据结构要挂科了。应试教育害死人,没有办法,挂了就挂了吧,不过为了以后,还是得好好复习,话说以后可能有用的。首先是树和图,在后面好像说要看看这些东西,慢慢来。

继续今天的课程。说了这么多的迭代,没有怎么仔细说过这个词语的意思,查了字典,这个词语就是循环的意思,它是一个动词,一直往返运行。

1.并行迭代

意思就是可以同时迭代两个序列。

names=['wang','du','li','lei']

ages=[12,23,42,22]

for i in range(len(names)):

print names[i], 'is' ,ages[i], 'year old'

wang is 12 year old

du is 23 year old

li is 42 year old

lei is 22 year old

这里有一个zip函数,就是压缩的意思,可以把两个序列合并到一起,形成一个列表

>>>zip(names,ages)

[('wang',12),('du',23),('li',42),('lei',22)]

他也可以用于任意多的序列,

>>>zip(range(5),xrange(1000))

[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]

上面中,不推荐在第二个里面使用range,因为这个会一直计算到1000,而xrange不会,他只计算前面的五个。

2.编号迭代

有时候要想迭代序列中的对象,同时还要获取当前对象的索引。关于这个索引,在序列中讲的是得出其元素,并且给出他的位置。例如,在一个字符串中替换所有包含‘xxx’的字符串,实现的方法有很多。

index=0

for string in strings:

if 'xxx' in string:

string[index]='[censored]'

index+=1

这个认真想一下,还是可以理解的,‘xxx‘是字符串,当时我想为什么不是直接就是if 'xxx' in string ,如果这样的话,就无法执行循环了。

还有一个使用内建函数的。

for index.string in enumerate(strings):

if 'xxx' in string:

string[index]='[censored]'

这个内建函数可以在提供索引的地方迭代 索引-值 对。

这个不懂,标记。

3.翻转和排序迭代

先看两个函数sorted和reversed,他们和列表里的reverse和sort方法一样,但是作用于任何序列或可迭代的对象上面,不是原地修改对象,而是返回翻转或者排序后的版本。

>>> sorted('hello,world')

[',', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']

>>> reserved('hello,world')

Traceback (most recent call last):

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

NameError: name 'reserved' is not defined

>>> reversed('hello,world')

<reversed object at 0x950066c>

上面那个排序的返回了一个列表,但是这个翻转的却是那么一堆,还记得这个是神马东西么?对象,这个是说过一点的对象。具体是为什么,教材没有说,应该有点复杂。

在序列中也可以通过序列的分片来翻转,例如x=range(10)[::-1]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: