python特性
切片:
就是可以取到对象中任意位置的元素,[start:end:interval];字符串、列表、元组可切片,字典、set()不可;
L[:] #复制原L L[:10] #前十个 L[-10:] #后十个 L[:1] #第一个 L[-1:] #最后一个 L[:10:2] #前十个数每两个取一个 L[:-10] #从第一个到索引为-10的元素 L[:-10:-2] #interval为负,从右向左一直到下标为-10的元素; L[::-1] #翻转
迭代:
可以直接作用于for
循环的对象统称为可迭代对象Iterable;可迭代对象都拥有iter()方法。
给定一个list或tuple,用for遍历每一个元素,就为迭代;字符串、列表、元组、字典、set()都可被迭代;
列表生成式:
[x for x in range(9)]生成0-8的list,[x*x for x in range(9)]生成0-8平方的list,[x+y for x in 'AB' for y in 'CD']生成全排列,[x*x for x in range(10) if x % 2 == 0]生成偶数平方的list
迭代器
特点:
- 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容
- 不能随机访问集合中的某个值 ,只能从头到尾依次访问
- 访问到一半时不能往回退
- 便于循环比较大的数据集合,节省内存
>>> a = iter([1,2,3,4,5]) >>> a <list_iterator object at 0x101402630> >>> a.__next__() 1 >>> a.__next__() 2 >>> a.__next__() 3 >>> a.__next__() 4 >>> a.__next__() 5 >>> a.__next__() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
生成器:
只要把[]改为()就创建了一个generator,使用next()可以迭代显示;
可以使用yield定义generator,generator和函数的执行流程不一样。函数是顺序执行,遇到return
语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。
def func(): yield 1 yield 2 yield 3 yield 4 # func是函数称为生成器,当执行此函数func()时会得到一个迭代器。 >>> temp = func() >>> temp.__next__() 1 >>> temp.__next__() 2 >>> temp.__next__() 3 >>> temp.__next__() 4 >>> temp.__next__() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
多态:
鸭子类型,不知道变量指定的是什么类型,但可以实现最终的结果;
封装:
把函数封装起来,不知怎么实现的过程,但调用即可实现;
继承:
子类可以继承基类的属性,可以重构基类的属性。