1、列表推导式 用列表推导式可以很容易的简化代码量而建立列表,如: >>> a=[x for x in range(10)] >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 第一个x是需要存至a中的元素,第二个x是循环体中遍历值 高级用法,加参数加判断语句(if语句以后会讲,这里只是展示可以添加判断)等等,如: >>> a=[x*2 for x in range(10)] >>> a [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] >>> a=[x*2 for x in range(10) if x%2==0] >>> a [0, 4, 8, 12, 16] >>> a=[[x,y] for x in range(3) for y in range(3)] >>> a [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] 2、生成器 在python中,一边循环一边计算的机制叫做生成器,为什么会有生成器呢?这是因为通过列表生成式虽然可以很方便的建立列表内容,但是由于内存限制导致列表容量有限,而且有时候我们只需要用到列表中某些元素不用完整的列表也可以节约内存,这就是生成器,生成器保存的是算法。快速生成生成器方法,只需要把列表推导式中括号[]在用小括号()写一次就创建了一个生成器。 如: >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a=(x for x in range(10)) >>> a at 0x00000000030B2448> >>> type(a) 取某元素的时候只需用next即可取出。 如: >>> next(a) 0 >>> next(a) 1 >>> a.__next__() 2 >>> a.__next__() 3 >>> a.__next__() 4 >>> a.__next__() 5 >>> a.__next__() 6 >>> a.__next__() 7 >>> a.__next__() 8 >>> a.__next__() 9 >>> a.__next__() Traceback (most recent call last): File "", line 1, in StopIteration 当元素取出完毕后就会返回错误信息,表示无元素,若还需使用就必须用指针从新指向第一位数据,为什么这里用a.__next__或者next(a)都可以呢?这个问题我放在后面面向对象讲述,有兴趣的可以用dir函数可以看看,当dir(next)的时候你会发现里面有个__call__的魔术变量,这个的作用可以把实例当作函数使用(先记住吧,以后会讲原因)