分类目录归档:Python
python的enumerate函数
2010 年 11 月 9 日这个是python的一个内建函数,看书的时候发现了他,mark一下 当我们既需要遍历索引同时需要遍历元素的时候,可以考虑使用enumerate函数,enumerate函数接受一个可遍历的对象,如列表、字符串 比如我们有一个["one","two","there"]的列表,我们需要在列表的每个元素前面加上他的编号 1 2 3 4 5 6 7 8 i = 0 seq = ["one","two","three"] for element in seq: seq[i] = ‘%d: %s’ % (i, seq[i]) i += 1 print seq [’0: one’, ’1: two’, ’2: three’]
关于Python中的yield
2010 年 10 月 23 日在介绍yield前有必要先说明下Python中的迭代器(iterator)和生成器(constructor)。 一、迭代器(iterator) 在Python中,for循环可以用于Python中的任何类型,包括列表、元祖等等,实际上,for循环可用于任何“可迭代对象”,这其实就是迭代器 迭代器是一个实现了迭代器协议的对象,Python中的迭代器协议就是有next方法的对象会前进到下一结果,而在一系列结果的末尾是,则会引发StopIteration。任何这类的对象在Python中都可以用for循环或其他遍历工具迭代,迭代工具内部会在每次迭代时调用next方法,并且捕捉StopIteration异常来确定何时离开。 使用迭代器一个显而易见的好处就是:每次只从对象中读取一条数据,不会造成内存的过大开销。 比如要逐行读取一个文件的内容,利用readlines()方法,我们可以这么写: 1 2 for line in open("test.txt").readlines(): print line 这样虽然可以工作,但不是最好的方法。因为他实际上是把文件一次加载到内存中,然后逐行打印。当文件很大时,这个方法的内存开销就很大了。 利用file的迭代器,我们可以这样写: 1 2 for line in open("test.txt"): #use file iterators print line 这是最简单也是运行速度最快的写法,他并没显式的读取文件,而是利用迭代器每次读取下一行。
用Python写了个贪吃蛇
2010 年 10 月 14 日第一次用Python写这种比较实用且好玩的东西,权当练手吧 游戏说明: * P键控制“暂停/开始” 源代码如下: