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
内容来自廖雪峰