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

迭代器

特点:

  1. 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容
  2. 不能随机访问集合中的某个值 ,只能从头到尾依次访问
  3. 访问到一半时不能往回退
  4. 便于循环比较大的数据集合,节省内存
>>> 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

多态:

  鸭子类型,不知道变量指定的是什么类型,但可以实现最终的结果;

封装:

  把函数封装起来,不知怎么实现的过程,但调用即可实现;

继承:

  子类可以继承基类的属性,可以重构基类的属性。

posted @ 2019-09-11 10:23  houyongchong  阅读(141)  评论(0编辑  收藏  举报