Python中的高级特性
1.切片。使用“[”和“]”即可,类似Matlab,可以切list,tuple,字符串等。
2.迭代。Python内置的enumerate函数可以把一个list变成索引-元素对。
3.列表生成式。列表生成式则可以用一行语句代替循环生成上面的list:
>>> [x * x for x in range(1, 11)] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
写列表生成式时,把要生成的元素
x * x放到前面,后面跟for循环,就可以把list创建出来。同时在for循环的后面还可以跟if 语句。4.生成器。在Python中,这种一边循环一边计算的机制,称为生成器:generator。
创建方法:
- 把一个列表生成式的
[]改成(),就创建了一个generator 。
- 把一个列表生成式的
- 如果一个函数定义中包含
yield关键字,那么这个函数就不再是一个普通函数,而是一个generator
- 如果一个函数定义中包含
5.函数是顺序执行,遇到
return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。6.用
for循环调用generator时,发现拿不到generator的return语句的返回值。如果想要拿到返回值,必须捕获StopIteration错误,返回值包含在StopIteration的value中:except StopIteration as e: ... print('Generator return value:', e.value) ... break
7.迭代器。可以被
next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。8.可迭代对象。可以直接作用于
for循环的对象统称为可迭代对象:Iterable。9.生成器都是
Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。 把list、dict、str等Iterable变成Iterator可以使用iter()函数:
>>> isinstance(iter([]), Iterator)
True
内容来自廖雪峰
posted on 2015-07-25 10:14 JackKing_defier 阅读(200) 评论(0) 收藏 举报

浙公网安备 33010602011771号