python 之高级特征

­原文链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017323698112640

【切片】

目的:取一个list或tuple的部分元素

L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']

(1)取前3个元素

L[0:3],表示索引从0开始,,直到3结束,但不包括3

(2)取后两个元素L[-2:0], 记住倒数第一个元素的索引是-1

(3)间隔取数

L = list(range(100))

L[:10:2]表示前10个数,每两个取一个,从0开始

 

【迭代】

目的:给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。在Python中,迭代是通过for ... in来完成的。

数组的迭代

例:

L= range(10)

For i in L:

    Print (i)

字典的迭代:

dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()

 

多参数迭代:

for x, y in [(1, 1), (2, 4), (3, 9)]:

...     print(x, y)

如果要对list实现类似Java那样的下标循环怎么办?Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:

for i, value in enumerate(['A', 'B', 'C']):

...     print(i, value)

 

如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

from collections import Iterable

isinstance('abc', Iterable)#返回False或者True

 

【列表生成式】

一层嵌套:

for x in range(1, 11):

...    L.append(x)

 

多层嵌套:

L=[x * x for x in range(1, 11) if x % 2 == 0]

 

【迭代器】

目的:介绍除for之外的迭代器netxt()

next()函数不断调用并返回下一个值,直到最后抛出StopIteration错误表示无法继续返回下一个值了。

可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator

可以使用isinstance()判断一个对象是否是Iterator对象:

from collections import Iterator

        isinstance((x for x in range(10)), Iterator)

生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。

把list、dict、str等Iterable变成Iterator可以使用iter()函数

小结

凡是可作用于for循环的对象都是Iterable类型;

凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iter,例:iter([])

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_35577990/article/details/91320054
今日推荐