一些迭代工具
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]
继续今天的课程。说了这么多的迭代,没有怎么仔细说过这个词语的意思,查了字典,这个词语就是循环的意思,它是一个动词,一直往返运行。
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]
相关文章推荐
- 一些好的PHP工具
- 一些工具
- 微信公众号开发用到的一些工具
- javscript 一些常用的工具方法
- 如何开好迭代回顾会议(2)准备、工具
- 在windows平台工作和开发的伙伴们,发现一个很牛B的公司Sysinternals,提供的一些工具大家可以看看是否可以用
- Android性能测试 一些适用于Android Studio的代码审查和性能测试工具
- 个人收集的一些库、工具、技术介绍
- Node.js开发环境的构建及开发所需的一些工具的简单介绍(nvm、npm、supervisor)
- linux的一些常用命令,工具
- 一些网络爱好者常用的网络工具
- 系统监控的一些工具w , vmstat
- css的一些工具
- (转载)一些查看系统信息的工具命令使用方法
- 一些有用的工具
- 整理的一些常见的开源测试工具
- win32平台中的程序转换为wince中的一些错误 . 未能为“VCCLCompilerTool”工具生成命令行
- Java 代码规范,你应该知道的一些工具和用法
- 一些工具的使用
- 一些智能语音处理的工具及软件