会飞的蝌蚪君

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1)三元运算(三目运算)

 

 

 

2)深浅拷贝

为什么要拷贝?

1
当进行修改时,想要保留原来的数据和修改后的数据

数字字符串 和 集合 在修改时的差异? (深浅拷贝不同的终极原因)

1
2
3
在修改数据时:
    数字字符串:在内存中新建一份数据
         集合:修改内存中的同一份数据

对于集合,如何保留其修改前和修改后的数据?

1
在内存中拷贝一份

对于集合,如何拷贝其n层元素同时拷贝?

1
深拷贝

对于集合的深浅拷贝实例:

 

浅拷贝:只拷贝第一层,后面地址一样。 copy.copy

 

 

深拷贝:拷贝到最深层,直到为字符串、数字等不可划分的层次。copy.deepcopy

 

命令窗口运行:

 

 3)生成器和迭代器

      生成器是可以根据我们自己的需求自定义的数据产生器,这一点由yield实现。

      我们自定义的函数里面含有yield时,那么这就是一个生成器。

     

1 def func():
2     yield 1
3     yield 2
4     yield 3
5     yield 4

 

     例如:我们利用生成器来产生xrange()

         

1 def xrange(n):
2     start = 0
3     while True:
4         if start >= n:
5             return
6         yield start   #迭代器执行一次__next__时,到yield就跳出,输出返回值。下一次执行时从上一次跳出的yield处接着往后执行。
7         start += 1

      调用生成器时返回一个迭代器,可以解决在使用数据时在最开始就全部在内存空间声明的浪费空间问题,可以在使用的时候才产生,使用过后可以不在存在或者被销毁。

 1 >>> temp = func()
 2 >>> temp.__next__()
 3 1
 4 >>> temp.__next__()
 5 2
 6 >>> temp.__next__()
 7 3
 8 >>> temp.__next__()
 9 4
10 >>> temp.__next__()
11 Traceback (most recent call last):
12   File "<stdin>", line 1, in <module>
13 StopIteration

 

 

 
posted on 2018-01-31 16:46  会飞的蝌蚪  阅读(107)  评论(0)    收藏  举报